// 文档 https://github.com/hooke007/MPV_lazy/wiki/4_GLSL

// CuNNy 4x32 SOFT (dp4a)
// Copyright (c) 2024 funnyplanter

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 3.0 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this program.  If not, see <https://www.gnu.org/licenses/>.
/* ------------------------------------------------------------------- */


//!DESC [CuNNy_4x32_SOFT_vk] -in
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND LUMA
//!SAVE in
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
#	define V4 f16vec4
#	define M4 f16mat4
#	define F float16_t
#else
#	define V4 vec4
#	define M4 mat4
#	define F float
#endif
#define l0(x, y) F((LUMA_mul * texelFetch(LUMA_raw, clamp(pos + ivec2(x, y), ivec2(0), sz) * ivec2(1, 1) + ivec2(0, 0), 0)).r)
shared F G[1][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			G[0][ay][ax] = l0(x - 1, y - 1);
		}
	}
	barrier();
	F s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;
	V4 r0, r1, r2, r3, r4, r5, r6, r7;
	r0 = V4(0.0); r1 = V4(0.0); r2 = V4(0.0); r3 = V4(0.0); r4 = V4(0.0); r5 = V4(0.0); r6 = V4(0.0); r7 = V4(0.0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2];
	r0 += V4(-1.341e-01, -2.212e-02, 5.502e-03, -1.876e-02) * s0_0_0;
	r1 += V4(-1.082e-02, -3.419e-03, -5.775e-02, -4.400e-01) * s0_0_0;
	r2 += V4(2.803e-01, 1.593e-02, 6.870e-01, -8.431e-03) * s0_0_0;
	r3 += V4(-2.228e-02, 3.899e-03, -6.244e-02, -2.446e-02) * s0_0_0;
	r4 += V4(3.268e-02, 6.687e-01, 6.798e-02, 2.246e-01) * s0_0_0;
	r5 += V4(5.847e-02, -1.837e-02, -1.409e-01, -9.269e-03) * s0_0_0;
	r6 += V4(-4.369e-03, -2.871e-02, -4.038e-03, -2.685e-02) * s0_0_0;
	r7 += V4(-7.070e-05, -4.387e-02, 4.090e-02, -4.811e-02) * s0_0_0;
	r0 += V4(3.894e-02, 2.871e-03, -2.290e-02, 1.555e-02) * s0_0_1;
	r1 += V4(-6.621e-01, -2.270e-01, -4.089e-01, 1.513e-03) * s0_0_1;
	r2 += V4(-1.619e-01, 1.188e-02, -6.855e-01, -4.486e-02) * s0_0_1;
	r3 += V4(5.960e-03, -7.705e-03, 3.271e-01, -1.917e-02) * s0_0_1;
	r4 += V4(-4.795e-02, 1.848e-02, -8.355e-02, 8.536e-02) * s0_0_1;
	r5 += V4(6.052e-01, -4.397e-02, 2.982e-01, 3.315e-03) * s0_0_1;
	r6 += V4(-4.480e-02, 6.159e-03, -1.244e-02, -9.557e-02) * s0_0_1;
	r7 += V4(3.995e-04, -1.795e-01, 1.271e-02, 3.007e-02) * s0_0_1;
	r0 += V4(-5.955e-03, 3.323e-02, 2.842e-02, -2.115e-03) * s0_0_2;
	r1 += V4(-1.256e-02, -5.444e-02, -2.655e-02, 2.274e-03) * s0_0_2;
	r2 += V4(-1.343e-01, 2.430e-03, -4.977e-03, 3.986e-02) * s0_0_2;
	r3 += V4(-8.636e-02, 1.405e-03, -1.576e-01, -2.517e-02) * s0_0_2;
	r4 += V4(2.029e-01, -2.382e-02, 1.346e-04, -2.098e-02) * s0_0_2;
	r5 += V4(7.400e-02, 2.668e-01, 1.815e-02, 9.100e-01) * s0_0_2;
	r6 += V4(-1.817e-01, 7.790e-03, 1.536e-02, 1.278e-01) * s0_0_2;
	r7 += V4(-1.338e-03, -2.087e-02, 4.538e-02, 6.372e-02) * s0_0_2;
	r0 += V4(2.939e-01, -1.748e-02, 1.145e-01, 5.319e-01) * s0_1_0;
	r1 += V4(9.096e-03, -5.286e-02, -2.920e-03, -2.717e-03) * s0_1_0;
	r2 += V4(-1.494e-01, -1.720e-01, 1.024e-02, 1.656e-01) * s0_1_0;
	r3 += V4(-1.016e-01, -1.891e-02, -4.727e-02, -1.109e-02) * s0_1_0;
	r4 += V4(1.143e-01, 3.733e-02, 5.488e-01, 1.834e-01) * s0_1_0;
	r5 += V4(-7.206e-02, -5.411e-02, -6.375e-02, -7.585e-03) * s0_1_0;
	r6 += V4(5.104e-02, -4.189e-01, -1.323e-02, 1.146e-02) * s0_1_0;
	r7 += V4(5.484e-03, -2.202e-01, -7.666e-03, -1.690e-02) * s0_1_0;
	r0 += V4(-1.098e-01, 2.427e-01, 9.564e-02, -5.047e-01) * s0_1_1;
	r1 += V4(6.601e-01, 2.591e-01, 4.755e-01, 4.412e-01) * s0_1_1;
	r2 += V4(-2.124e-01, -3.383e-01, -1.259e-02, -3.271e-01) * s0_1_1;
	r3 += V4(4.092e-01, 4.930e-01, -1.246e-01, 6.263e-01) * s0_1_1;
	r4 += V4(-1.175e-01, -7.447e-02, -5.198e-01, -6.936e-02) * s0_1_1;
	r5 += V4(-5.453e-01, -4.919e-01, -4.593e-01, -9.868e-03) * s0_1_1;
	r6 += V4(4.031e-01, -8.208e-02, 1.666e-01, 9.313e-02) * s0_1_1;
	r7 += V4(-1.124e-02, 2.939e-01, -8.853e+00, 2.436e-01) * s0_1_1;
	r0 += V4(5.433e-02, -8.913e-02, -7.004e-02, -2.276e-02) * s0_1_2;
	r1 += V4(1.547e-02, 9.046e-02, 3.058e-02, -1.630e-03) * s0_1_2;
	r2 += V4(2.978e-01, 1.438e-01, 4.540e-03, -1.009e-02) * s0_1_2;
	r3 += V4(-1.200e-01, -1.680e-02, 7.441e-02, -1.050e-02) * s0_1_2;
	r4 += V4(-4.322e-01, -2.009e-02, -1.098e-02, -2.126e-01) * s0_1_2;
	r5 += V4(-7.940e-02, 4.189e-01, 2.939e-01, 8.211e-03) * s0_1_2;
	r6 += V4(-2.156e-01, -2.732e-02, -2.671e-02, -1.632e-01) * s0_1_2;
	r7 += V4(6.356e-03, 4.057e-02, 3.750e-02, -2.754e-01) * s0_1_2;
	r0 += V4(-2.558e-01, 3.890e-02, -3.524e-01, -7.172e-01) * s0_2_0;
	r1 += V4(2.247e-03, 6.047e-02, 2.219e-02, -7.110e-04) * s0_2_0;
	r2 += V4(-1.457e-01, 1.007e-01, -9.047e-04, 1.685e-01) * s0_2_0;
	r3 += V4(-7.423e-02, 6.121e-03, 1.108e-01, -1.391e-02) * s0_2_0;
	r4 += V4(1.992e-02, -1.294e-02, 3.080e-02, 6.894e-02) * s0_2_0;
	r5 += V4(1.011e-02, 2.439e-02, 2.239e-01, 4.159e-03) * s0_2_0;
	r6 += V4(-2.777e-01, 4.659e-01, 1.395e-02, -2.495e-02) * s0_2_0;
	r7 += V4(-7.801e-03, -7.840e-02, 4.048e-02, 1.812e-01) * s0_2_0;
	r0 += V4(8.287e-02, -5.057e-02, 1.362e-01, 4.208e-02) * s0_2_1;
	r1 += V4(3.211e-03, -9.007e-02, -2.222e-02, 1.759e-03) * s0_2_1;
	r2 += V4(3.471e-01, 1.570e-01, 1.814e-04, 2.449e-02) * s0_2_1;
	r3 += V4(2.801e-02, -4.712e-01, -1.846e-01, -1.580e-02) * s0_2_1;
	r4 += V4(-7.382e-03, -6.569e-03, -2.737e-02, -1.681e-01) * s0_2_1;
	r5 += V4(-5.005e-02, -1.494e-01, 3.908e-02, -6.590e-03) * s0_2_1;
	r6 += V4(-1.645e-01, 5.927e-02, -1.825e-02, -7.957e-03) * s0_2_1;
	r7 += V4(-6.504e-01, 3.999e-03, 3.625e-02, -4.504e-01) * s0_2_1;
	r0 += V4(-6.221e-02, -1.680e-01, 4.262e-02, -8.093e-03) * s0_2_2;
	r1 += V4(-5.363e-03, -2.075e-02, -4.909e-03, -1.096e-03) * s0_2_2;
	r2 += V4(-1.273e-01, -5.301e-03, -3.420e-04, -7.017e-03) * s0_2_2;
	r3 += V4(-4.017e-02, 1.351e-02, 3.218e-02, -2.622e-02) * s0_2_2;
	r4 += V4(-5.506e-02, 1.985e-02, -3.702e-03, -8.958e-02) * s0_2_2;
	r5 += V4(1.645e-03, 5.099e-02, -2.143e-01, -3.835e-03) * s0_2_2;
	r6 += V4(1.550e-03, 1.640e-02, 1.045e-02, 2.637e-02) * s0_2_2;
	r7 += V4(6.554e-01, 1.114e-02, 2.568e-02, 2.705e-01) * s0_2_2;
	r0 += V4(-5.369e-03, -1.332e-02, -1.140e-02, 1.724e-03);
	r0 = clamp(r0, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), vec4(r0));
	r1 += V4(5.821e-04, -1.295e-02, 1.377e-02, 4.321e-04);
	r1 = clamp(r1, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), vec4(r1));
	r2 += V4(-3.855e-03, -1.442e-02, 1.636e-04, -5.371e-02);
	r2 = clamp(r2, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), vec4(r2));
	r3 += V4(1.330e-04, 7.092e-03, -1.518e-02, -6.870e-01);
	r3 = clamp(r3, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), vec4(r3));
	r4 += V4(5.056e-03, -5.970e-01, 7.606e-03, 4.716e-03);
	r4 = clamp(r4, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), vec4(r4));
	r5 += V4(3.433e-03, 7.249e-03, -5.267e-03, -8.769e-01);
	r5 = clamp(r5, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), vec4(r5));
	r6 += V4(-6.681e-03, 3.012e-03, -8.412e-02, 3.191e-02);
	r6 = clamp(r6, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), vec4(r6));
	r7 += V4(6.064e-04, -7.925e-04, 1.970e-02, -2.064e-02);
	r7 = clamp(r7, V4(0.0), V4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), vec4(r7));
}

//!DESC [CuNNy_4x32_SOFT_vk] -conv1
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND in
//!BIND LUMA
//!SAVE conv1
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * in_pt;
			r = in_gather(p, 0);
			g = in_gather(p, 1);
			b = in_gather(p, 2);
			a = in_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w);
			vec4 v1 = vec4(r.z, g.z, b.z, a.z);
			vec4 v2 = vec4(r.x, g.x, b.x, a.x);
			vec4 v3 = vec4(r.y, g.y, b.y, a.y);
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * in_pt;
			r = in_gather(p, 0);
			g = in_gather(p, 1);
			b = in_gather(p, 2);
			a = in_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w);
			vec4 v5 = vec4(r.z, g.z, b.z, a.z);
			vec4 v6 = vec4(r.x, g.x, b.x, a.x);
			vec4 v7 = vec4(r.y, g.y, b.y, a.y);
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x0708EC07, 0x0A0DEC07, 0x04FF1001, 0x0000100B);
	r1 = D(r1, s0_0_0, 0xFB0A11F8, 0xF2090408, 0xF8FC25FA, 0xFF077F0C);
	r2 = D(r2, s0_0_0, 0xFAFD0B1E, 0x08FAAF1E, 0xFA010701, 0x0903650E);
	r3 = D(r3, s0_0_0, 0x0DF0FF14, 0x10DCFD0D, 0xED367FBC, 0x17061911);
	r4 = D(r4, s0_0_0, 0x320113B7, 0x061AAFED, 0x03F9F3FF, 0x87077F07);
	r5 = D(r5, s0_0_0, 0xF9F60E13, 0x02FF01F6, 0x03F51AD7, 0xF6092413);
	r6 = D(r6, s0_0_0, 0xF3CA0E02, 0x25F5DDAC, 0x2FBB4423, 0x000409F6);
	r7 = D(r7, s0_0_0, 0x1FEE033C, 0xEEFC7F18, 0xFC1309F9, 0x020FEFEB);
	r0 = D(r0, s0_0_1, 0xFAFD2FCC, 0xC2EBCBF3, 0x01F4F8FE, 0xFFF904F4);
	r1 = D(r1, s0_0_1, 0xFDDAD402, 0xF4FDC920, 0xFFF2E718, 0x13BA81ED);
	r2 = D(r2, s0_0_1, 0xF913EE11, 0x31D50FC5, 0xFAF31BCA, 0x0C130E20);
	r3 = D(r3, s0_0_1, 0xEAF6F617, 0xF323F3F0, 0x6A4DD8E9, 0x0CC7EC0F);
	r4 = D(r4, s0_0_1, 0x81FCD725, 0xE7F8122D, 0x1716E61B, 0x81F1E27F);
	r5 = D(r5, s0_0_1, 0xFFD0F711, 0x01FEF9FC, 0x818117D9, 0x07060ED7);
	r6 = D(r6, s0_0_1, 0x0DDFBB19, 0x15D9EB05, 0x12281EFC, 0x09F80903);
	r7 = D(r7, s0_0_1, 0xB60D1081, 0xD602F512, 0xFCE203EC, 0xF8B8E214);
	r0 = D(r0, s0_0_2, 0x13EDEB26, 0x04F20D0F, 0x07FEF9FD, 0x000EFB02);
	r1 = D(r1, s0_0_2, 0x819707F3, 0x4EED1AFD, 0x180D0EF2, 0x2F46FCDF);
	r2 = D(r2, s0_0_2, 0x0D5106F9, 0xF734DE3E, 0x0F7FF307, 0x00A70006);
	r3 = D(r3, s0_0_2, 0xFF0AED0B, 0x1BE12215, 0xDD81D5F2, 0xFDE10DED);
	r4 = D(r4, s0_0_2, 0x8181D89B, 0xE4EFF8F3, 0xEF55F100, 0xF0C3CFE4);
	r5 = D(r5, s0_0_2, 0x36F120F0, 0x05030004, 0xD521CD48, 0xF033F9F4);
	r6 = D(r6, s0_0_2, 0xF00100D0, 0xE61FFBCB, 0xCC25FE81, 0x0205FE08);
	r7 = D(r7, s0_0_2, 0xBFE301EE, 0x21D92D09, 0x0206FE02, 0x1DD4E7CE);
	r0 = D(r0, s0_1_0, 0x1808FF00, 0x810EC80B, 0x04060EF7, 0xFA05030A);
	r1 = D(r1, s0_1_0, 0x070DBDF4, 0x0D1F44F3, 0xF9FEC7FB, 0x06FE30E7);
	r2 = D(r2, s0_1_0, 0xF4F0DA0F, 0x0933D1E8, 0xFAE7AF2E, 0xF9F9F60B);
	r3 = D(r3, s0_1_0, 0x06EE010C, 0x1BFAE7FE, 0x81BA042C, 0xEC0C0E12);
	r4 = D(r4, s0_1_0, 0x811033EC, 0x100901F7, 0xED181115, 0x2E16DCF9);
	r5 = D(r5, s0_1_0, 0x090DE20B, 0xFEFCF903, 0xF01EAE5C, 0x00F8B8ED);
	r6 = D(r6, s0_1_0, 0x020CE8DC, 0x1B01FA02, 0x001D0DBF, 0xFEF8D40F);
	r7 = D(r7, s0_1_0, 0xF314BD23, 0xFD04FE04, 0x09F60F0A, 0x05FA96EF);
	r0 = D(r0, s0_1_1, 0xFB1022E4, 0x81382FF7, 0xFEF700EF, 0x050BF7EA);
	r1 = D(r1, s0_1_1, 0x8112F00C, 0xFBE9A9BC, 0x1C1FC6FA, 0x45F4E9AC);
	r2 = D(r2, s0_1_1, 0xFD0F07EA, 0x1D002704, 0x10F7E1C7, 0x23032B09);
	r3 = D(r3, s0_1_1, 0x239A04F9, 0x251DD01F, 0x9214F7DC, 0xF410F105);
	r4 = D(r4, s0_1_1, 0x811601FE, 0x0AD30D2A, 0x02EA0402, 0x81183532);
	r5 = D(r5, s0_1_1, 0xDFF2811B, 0xFD03EC0A, 0x01F712D5, 0x17FC0905);
	r6 = D(r6, s0_1_1, 0x0E27EB68, 0xE7D3090B, 0x0810EDE6, 0x0F0015FC);
	r7 = D(r7, s0_1_1, 0x45EFEF1F, 0x94060206, 0xFA0302FA, 0x812B002F);
	r0 = D(r0, s0_1_2, 0xE5D1F81E, 0x14DC01C2, 0x16030105, 0x03EFFAEA);
	r1 = D(r1, s0_1_2, 0xFA03F820, 0xE3EB1513, 0x6ED80D2C, 0xB4F40F48);
	r2 = D(r2, s0_1_2, 0xDAD4FB3E, 0x81AE2C1B, 0x815CF1C0, 0xD627F3D0);
	r3 = D(r3, s0_1_2, 0x8109054B, 0xE9130E4E, 0x1604F71D, 0x0400F2F2);
	r4 = D(r4, s0_1_2, 0xFCF2D300, 0xD3D402F4, 0x0FE22A1A, 0xCEEB08DD);
	r5 = D(r5, s0_1_2, 0x67EC2120, 0x0B0208F9, 0x05FEE823, 0xD7D3FDD1);
	r6 = D(r6, s0_1_2, 0x03FFF6F9, 0x05040211, 0x00D5E313, 0xF2F7F4F9);
	r7 = D(r7, s0_1_2, 0x2DE003B2, 0xF4FFF202, 0x060007FB, 0x00050CEC);
	r0 = D(r0, s0_2_0, 0xFCEEE811, 0x100D15F1, 0x01FF01FE, 0x02020C04);
	r1 = D(r1, s0_2_0, 0x01060DF6, 0xF6050C01, 0x0307F8EC, 0x0805F2FB);
	r2 = D(r2, s0_2_0, 0xF3ECEA36, 0x0711ECFB, 0x180CEED1, 0xFE04E606);
	r3 = D(r3, s0_2_0, 0xF7FEEE1B, 0xF30E29D7, 0xFCE3CC16, 0x07F60408);
	r4 = D(r4, s0_2_0, 0x2106F6CD, 0x0B172BF8, 0xF602121B, 0x55266008);
	r5 = D(r5, s0_2_0, 0x0C06160E, 0x03030CF6, 0x14121452, 0xFD02F806);
	r6 = D(r6, s0_2_0, 0xE9EC1142, 0x0406F3DE, 0xF1F80819, 0xFFFF0405);
	r7 = D(r7, s0_2_0, 0x0227EEF6, 0xFF09F709, 0x050205F6, 0xF30B07F8);
	r0 = D(r0, s0_2_1, 0xF50DDD0F, 0x16E01904, 0xFEF900F6, 0x040AF402);
	r1 = D(r1, s0_2_1, 0x13F80005, 0xFC3AC21D, 0xF20C12F1, 0x2A08E8E8);
	r2 = D(r2, s0_2_1, 0x16FB2404, 0xD4EFE202, 0xC205CBFC, 0xFA0104F3);
	r3 = D(r3, s0_2_1, 0x13FDE01C, 0x05273815, 0xF923D8FE, 0x05F828D9);
	r4 = D(r4, s0_2_1, 0x240317F3, 0x0A33F7F4, 0xFBEB1FE8, 0xD4F7F80C);
	r5 = D(r5, s0_2_1, 0x40003101, 0x0103D508, 0x19ED1BF8, 0x20FCF2F7);
	r6 = D(r6, s0_2_1, 0xFD0648F9, 0x0A07EEFD, 0xF7F810F0, 0x11FDE5E7);
	r7 = D(r7, s0_2_1, 0xF82911F8, 0xF401FB1C, 0x010604F6, 0x15F1051B);
	r0 = D(r0, s0_2_2, 0xEF1F0910, 0xFE02F7EF, 0x01010107, 0x02FA010E);
	r1 = D(r1, s0_2_2, 0x0A16FAC6, 0xF412F21B, 0x170B06F8, 0x11F71002);
	r2 = D(r2, s0_2_2, 0xFAF6EA0C, 0xFF020BF5, 0x320C13DE, 0x03FF00EF);
	r3 = D(r3, s0_2_2, 0xE40A0A1E, 0xE8E6357F, 0x0C004313, 0x00F2FAF3);
	r4 = D(r4, s0_2_2, 0x14E406FD, 0x2454FE99, 0xD8DE06D4, 0x09E50600);
	r5 = D(r5, s0_2_2, 0x87FE17F5, 0x8107FE0F, 0x1F1DE0FE, 0x0D0C04EF);
	r6 = D(r6, s0_2_2, 0xEBED314E, 0x03FC0503, 0xEAF9EB1F, 0xFE0B0D0B);
	r7 = D(r7, s0_2_2, 0x29F1EBB6, 0x05F806FB, 0xF7FFFF0F, 0x0A0100D3);
	r0 = D(r0, s1_0_0, 0xFFFDE208, 0x0F0AF2F1, 0x00020D03, 0x0002FA07);
	r1 = D(r1, s1_0_0, 0x0BF4F10E, 0xF512F5F9, 0xFF0329EF, 0x05F5FE04);
	r2 = D(r2, s1_0_0, 0xFFF4FD0B, 0x063F11E3, 0x06FD0814, 0x0502D607);
	r3 = D(r3, s1_0_0, 0x0312E6F3, 0x023DE2D7, 0xFFF5082B, 0xFC2523E7);
	r4 = D(r4, s1_0_0, 0x0715FAFB, 0xFEE81418, 0x020714FA, 0x11E09D2F);
	r5 = D(r5, s1_0_0, 0x0EF7FFFA, 0x00FF0201, 0xF303DEFD, 0xFC1205F3);
	r6 = D(r6, s1_0_0, 0x0633ECE3, 0x090F07FB, 0xEF3B7FBD, 0x0206FDF9);
	r7 = D(r7, s1_0_0, 0xFF272FE9, 0xF8CDF723, 0x0200EE12, 0x07EEF50F);
	r0 = D(r0, s1_0_1, 0xFB04C11E, 0x0B1DEBFA, 0xF7F90D01, 0xFAEA060D);
	r1 = D(r1, s1_0_1, 0xFEFDFA14, 0xFD1FFBFA, 0xFE2316DF, 0x08EF0703);
	r2 = D(r2, s1_0_1, 0xFEF66AFF, 0x0DCEBE03, 0xF31B0EED, 0x04F7C418);
	r3 = D(r3, s1_0_1, 0x0100FC04, 0x0ADB0019, 0xF7E1CA19, 0xEF0BFCFA);
	r4 = D(r4, s1_0_1, 0xF904ED08, 0xEFF5E500, 0xF8FDEA0D, 0x1CF11C09);
	r5 = D(r5, s1_0_1, 0x13F3E901, 0xFFFBFF02, 0x0839CB03, 0x050921E5);
	r6 = D(r6, s1_0_1, 0x0AF94BF7, 0xF003FA05, 0x0D982A31, 0x02FCF904);
	r7 = D(r7, s1_0_1, 0xE90D7FC0, 0x14F1ED04, 0xF1FD0EFC, 0xF51912F3);
	r0 = D(r0, s1_0_2, 0x00FE11FD, 0xF40CF8F5, 0x00F90401, 0xF703F606);
	r1 = D(r1, s1_0_2, 0xFEDAF11A, 0xE701FB00, 0x0EFB01FF, 0xF8110BF9);
	r2 = D(r2, s1_0_2, 0xEA3E2AC2, 0xDEBF3344, 0xFBEBFF06, 0xEF1308FF);
	r3 = D(r3, s1_0_2, 0x0C02EDEE, 0x0BE0F513, 0xEC1309EF, 0xFF04F2FC);
	r4 = D(r4, s1_0_2, 0x06DEFC10, 0x11F81800, 0x02F3EA13, 0x0209DEEB);
	r5 = D(r5, s1_0_2, 0x01F9040D, 0x00FEFF02, 0x05D8120C, 0x0800F201);
	r6 = D(r6, s1_0_2, 0xFDE4F405, 0xF0020004, 0x094445A5, 0xFF11FEF4);
	r7 = D(r7, s1_0_2, 0xF0D872F8, 0x1A0D03FB, 0x01F8FE08, 0x13F4FDF8);
	r0 = D(r0, s1_1_0, 0x01E3F7FB, 0x1BD0990D, 0xFE0707F7, 0x0609FC0C);
	r1 = D(r1, s1_1_0, 0x0E1AF5ED, 0xF8FA0FFB, 0x00F6E30F, 0x06E1FA00);
	r2 = D(r2, s1_1_0, 0x1010ECD7, 0x0ED439F2, 0x15097F16, 0x021DE2F1);
	r3 = D(r3, s1_1_0, 0xEEF80430, 0xEAD8013F, 0x112D3FC4, 0x0BB203F7);
	r4 = D(r4, s1_1_0, 0xEAFCF902, 0xE330DFFB, 0x10E60DF9, 0x01A9DF04);
	r5 = D(r5, s1_1_0, 0x06F107FF, 0x000505FE, 0x1D310E3E, 0xFE1323EF);
	r6 = D(r6, s1_1_0, 0x0D1A39F7, 0xFE6524DE, 0x0E0D18B6, 0xF6130015);
	r7 = D(r7, s1_1_0, 0xF60F8128, 0x0DFF0B27, 0x031DFDF0, 0x0513EBD2);
	r0 = D(r0, s1_1_1, 0xCE30CE15, 0x10C693DE, 0x0857FD22, 0xFE0107FC);
	r1 = D(r1, s1_1_1, 0xEB61E7C5, 0x13B0252F, 0xE6F411E0, 0xFB10BEC3);
	r2 = D(r2, s1_1_1, 0xFDF9CA3B, 0xFFF6F1F0, 0x81F6BB81, 0xE732C9DD);
	r3 = D(r3, s1_1_1, 0xB1C91081, 0xFBE806FF, 0xDCFCF8ED, 0x0BECFC46);
	r4 = D(r4, s1_1_1, 0xD041F711, 0xF4BBF734, 0xE3281D1B, 0x180AB42E);
	r5 = D(r5, s1_1_1, 0xFBEEBD1C, 0xFFF90BFD, 0x82F300EE, 0xF63612C5);
	r6 = D(r6, s1_1_1, 0xE8D58924, 0xE1DD0FF9, 0x0BD3A862, 0xEDF5FCF8);
	r7 = D(r7, s1_1_1, 0xCFEDAFD7, 0x0106EF02, 0x033CF92F, 0x346BF8DA);
	r0 = D(r0, s1_1_2, 0x10E0F1F3, 0x08070512, 0x00EA0206, 0xEC07F200);
	r1 = D(r1, s1_1_2, 0x0D09DFF9, 0xE02811FB, 0x1C06FF17, 0xFD3A301E);
	r2 = D(r2, s1_1_2, 0x813CEF81, 0x0430E130, 0xCC3361CF, 0x172217F3);
	r3 = D(r3, s1_1_2, 0x38FE17D4, 0x2226D9E3, 0x3CBEF03C, 0x1BFFFAEB);
	r4 = D(r4, s1_1_2, 0x1DD5F00E, 0xEA0D23F3, 0xFBE514F4, 0xFC0F14E9);
	r5 = D(r5, s1_1_2, 0xFA2AF204, 0x0706EEFF, 0xFB08CA0E, 0xFB070D04);
	r6 = D(r6, s1_1_2, 0x31F6EF10, 0x07FDF109, 0xFA3EE8C4, 0x07FB0300);
	r7 = D(r7, s1_1_2, 0xBF2F21EA, 0x08190FF8, 0x08EEFFF6, 0xD6F4EE0C);
	r0 = D(r0, s1_2_0, 0x0DFF0B16, 0xF32C86BB, 0xFC080902, 0xFB0608F8);
	r1 = D(r1, s1_2_0, 0x08F800ED, 0xFB2FF201, 0x0AEAF0FC, 0x0FF5191C);
	r2 = D(r2, s1_2_0, 0x0809E0F0, 0x0217020B, 0xFD042A13, 0x050718EC);
	r3 = D(r3, s1_2_0, 0x0DF91DE6, 0x23C62619, 0x21E8B7D1, 0xEFF0F9EB);
	r4 = D(r4, s1_2_0, 0xF632B9BC, 0x1010F3E8, 0x08EF19E7, 0x05B707D3);
	r5 = D(r5, s1_2_0, 0x11E63223, 0x02FCF506, 0xDCF718D4, 0xFA010A03);
	r6 = D(r6, s1_2_0, 0x0838E1BA, 0xF7CA3EF4, 0x060F051D, 0xF7DC11ED);
	r7 = D(r7, s1_2_0, 0xF40FE515, 0xFF08FA12, 0xF9FF01F9, 0x1014F5FD);
	r0 = D(r0, s1_2_1, 0x0B04FD08, 0xC6F01FE0, 0x01EF06F1, 0x01151CD4);
	r1 = D(r1, s1_2_1, 0x0EE82681, 0xF6AD122D, 0x0110F14D, 0x000204DC);
	r2 = D(r2, s1_2_1, 0x0CE0DE58, 0xFE11F209, 0x1C2AF6E2, 0x1016E712);
	r3 = D(r3, s1_2_1, 0x36043EED, 0xE92002ED, 0xD975FF81, 0xD405E617);
	r4 = D(r4, s1_2_1, 0xF00FC6CD, 0xC0DAFB08, 0x5AC6CF7F, 0xE2D0077F);
	r5 = D(r5, s1_2_1, 0x1EEFDD17, 0x01E70AF1, 0x01DE3311, 0x03811581);
	r6 = D(r6, s1_2_1, 0x1C928181, 0xA236E6DF, 0xE8FBE9C4, 0x81E132E9);
	r7 = D(r7, s1_2_1, 0x19C8E7EE, 0xF41E5AB6, 0x0A01FDF9, 0xEECA321F);
	r0 = D(r0, s1_2_2, 0xF505FCDF, 0xF1F8E921, 0xFFF9030A, 0xE2FA021D);
	r1 = D(r1, s1_2_2, 0x81FF1703, 0x02D7ABDA, 0x000004E4, 0x0E1406EA);
	r2 = D(r2, s1_2_2, 0x0DA20306, 0x0C05FADA, 0xEE180604, 0x090913F1);
	r3 = D(r3, s1_2_2, 0xC30CE810, 0x0136F7EF, 0xFFE2C828, 0x06F90C03);
	r4 = D(r4, s1_2_2, 0xEB14281C, 0x671F4008, 0x04C7BFCF, 0x111341D0);
	r5 = D(r5, s1_2_2, 0xE662E281, 0x2119FAFF, 0x3DF80EDD, 0xF2FB45F4);
	r6 = D(r6, s1_2_2, 0x0D4D08D9, 0xECFF0E00, 0x27F820E2, 0xEE0C0D06);
	r7 = D(r7, s1_2_2, 0xF8D445D9, 0x2BE8FD08, 0x02F1F80F, 0x12E81006);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x0706040C, 0xCD040318, 0x030300FF, 0x0501FC02);
	r1 = D(r1, s0_0_0, 0xE9011E1B, 0x1202F1F6, 0xFBF80C07, 0x110C07FC);
	r2 = D(r2, s0_0_0, 0x17FC030D, 0xEFF2F421, 0xE507CB24, 0x0105120D);
	r3 = D(r3, s0_0_0, 0x0303F50C, 0xE2051200, 0x1DF6E52A, 0xF1FE16F7);
	r4 = D(r4, s0_0_0, 0xDEFD271A, 0xF20B06EB, 0xFCFA0B0C, 0x530D3413);
	r5 = D(r5, s0_0_0, 0xEBFD0110, 0xFEFFFBFF, 0x0402C7EB, 0xF200E7F7);
	r6 = D(r6, s0_0_0, 0xE900FC04, 0xFCFCEE0E, 0x4E09FB0C, 0xF302FB06);
	r7 = D(r7, s0_0_0, 0xEF2BFACF, 0xF90107F6, 0x00FF0006, 0xF3023212);
	r0 = D(r0, s0_0_1, 0x420B0C06, 0x2507FCFE, 0xFF03FEFD, 0x0BFEF503);
	r1 = D(r1, s0_0_1, 0x22FF0D05, 0x7501E80A, 0x0FF90A0D, 0xDA0766FB);
	r2 = D(r2, s0_0_1, 0x0AFBD413, 0x06F3A8C7, 0x06042624, 0xE9FD1B10);
	r3 = D(r3, s0_0_1, 0x17FCF509, 0xCC00F425, 0x0EF2373E, 0xF1F9EA09);
	r4 = D(r4, s0_0_1, 0x0E091E0C, 0x1414D8FC, 0xF2052703, 0xE2E7F00B);
	r5 = D(r5, s0_0_1, 0x30FEF00F, 0xFA01FA00, 0x1EEB4356, 0x1D021204);
	r6 = D(r6, s0_0_1, 0xFEF81E32, 0x1D00FFEA, 0x04F4EC04, 0x020206F3);
	r7 = D(r7, s0_0_1, 0xC911FA0C, 0xFD0AF813, 0xFB02FFF8, 0xC4000AFB);
	r0 = D(r0, s0_0_2, 0xE30D0EEF, 0x0E07FE01, 0x04060805, 0xFAFD05FD);
	r1 = D(r1, s0_0_2, 0x2806E804, 0x53F5D0DC, 0xD3F5D806, 0x5200D3E2);
	r2 = D(r2, s0_0_2, 0xF6FB190E, 0x02C23931, 0x6B15DBEC, 0x2101E3F9);
	r3 = D(r3, s0_0_2, 0x81F62520, 0x12FE1C04, 0xE5F5020C, 0xFF02FB09);
	r4 = D(r4, s0_0_2, 0xEF03EF12, 0xFD04E321, 0x2A0A06DE, 0xE20A1EFB);
	r5 = D(r5, s0_0_2, 0x28F4E607, 0xFFFF0702, 0x47EFE4F0, 0xFB000E05);
	r6 = D(r6, s0_0_2, 0xF603FC05, 0xFC0700FB, 0xE4E41F18, 0x0004FF03);
	r7 = D(r7, s0_0_2, 0x1C0BC5E8, 0x1202F003, 0x0BFE0201, 0x2E11E70B);
	r0 = D(r0, s0_1_0, 0xEC0D00F9, 0x7809E4FE, 0xFA0000FF, 0xFB00F504);
	r1 = D(r1, s0_1_0, 0x2D251400, 0xF4F003E3, 0x1603020F, 0xF000F911);
	r2 = D(r2, s0_1_0, 0x00EA2816, 0xF8810812, 0x0316F010, 0x0DF61D04);
	r3 = D(r3, s0_1_0, 0x04F7F40F, 0x1F03F4E2, 0x10E7C215, 0x19F10AE7);
	r4 = D(r4, s0_1_0, 0x49F406E7, 0xF92908E8, 0x0AF32401, 0x540B2A0C);
	r5 = D(r5, s0_1_0, 0xF5E7FC13, 0x04FBFC04, 0xFBACC418, 0xFB04FD07);
	r6 = D(r6, s0_1_0, 0x1FDC2615, 0x4D05260F, 0xD8F213D3, 0x0A11EB00);
	r7 = D(r7, s0_1_0, 0xF3DEC8CC, 0xF0F20F11, 0x0F0AE90C, 0x0CE0F714);
	r0 = D(r0, s0_1_1, 0x02F3FBED, 0xFA4FEBF3, 0xFC0509F9, 0xF3FE0505);
	r1 = D(r1, s0_1_1, 0x5EE97FEA, 0xBBDAEE07, 0x09DF0AEC, 0x14DBE90B);
	r2 = D(r2, s0_1_1, 0xD000EDD4, 0xF6B3CBD2, 0x0818D1DD, 0x27FAC405);
	r3 = D(r3, s0_1_1, 0x2138EBF9, 0x21FCDBFA, 0x7FD2E9C4, 0x03FDF521);
	r4 = D(r4, s0_1_1, 0x7F20AC16, 0x18374FAF, 0x0114B0DF, 0xD5819438);
	r5 = D(r5, s0_1_1, 0xB6050DF1, 0x00FAFF04, 0x98A94745, 0xE0FC05F5);
	r6 = D(r6, s0_1_1, 0xEB1BACF8, 0xB4F71415, 0x12FA0208, 0xF71003F6);
	r7 = D(r7, s0_1_1, 0xFEE11127, 0x4631F81F, 0xD2090C0F, 0xC397212D);
	r0 = D(r0, s0_1_2, 0xD4B72011, 0xCFED22F8, 0x0100F9FF, 0xFE10FCFE);
	r1 = D(r1, s0_1_2, 0x03FBF906, 0xB6952CC0, 0xB6DDF417, 0x1FA00FFA);
	r2 = D(r2, s0_1_2, 0x02011BED, 0xE8FA1615, 0xE3B61A14, 0xECCE04F9);
	r3 = D(r3, s0_1_2, 0x17FC19FC, 0xBBEF0002, 0xF608C41D, 0xF6241203);
	r4 = D(r4, s0_1_2, 0xF70D1E0A, 0xE206C0F8, 0x6823DCDF, 0xCBE7DD08);
	r5 = D(r5, s0_1_2, 0xABD55407, 0xE6F51114, 0xF3DFD6DC, 0xF9F0F5FF);
	r6 = D(r6, s0_1_2, 0x0000BCF6, 0x0D19F202, 0xFAEB1734, 0xEC0211FC);
	r7 = D(r7, s0_1_2, 0xEAC240C2, 0xE4203CF6, 0x050F06FD, 0x06E0F70A);
	r0 = D(r0, s0_2_0, 0x0C45EC02, 0xFAAFD1D5, 0xFFFF0102, 0x0F06FCF5);
	r1 = D(r1, s0_2_0, 0xEBFDF10B, 0xF00C01EE, 0xF91115FE, 0x08F9070E);
	r2 = D(r2, s0_2_0, 0x08F0040F, 0xDA490203, 0x0B080115, 0x0CFBF1FE);
	r3 = D(r3, s0_2_0, 0x15021902, 0xF0F9D41B, 0xDBF01A56, 0x04FAF8F9);
	r4 = D(r4, s0_2_0, 0x2581DDFE, 0xFD04DA0D, 0xF7230316, 0x67FC7FCD);
	r5 = D(r5, s0_2_0, 0x0B00F90D, 0xF9F9FD02, 0x2325FDFD, 0x08FFFAFE);
	r6 = D(r6, s0_2_0, 0xF8368B1B, 0xF329D6F6, 0x00E502FD, 0x030906F4);
	r7 = D(r7, s0_2_0, 0x30D2D9F2, 0xF9FFF301, 0x0C0DFAFD, 0xF8F4E813);
	r0 = D(r0, s0_2_1, 0xFB100B17, 0x05FA13FB, 0xFB03FD05, 0xFCDEF9FD);
	r1 = D(r1, s0_2_1, 0x25810E04, 0xE953090B, 0x1321E80B, 0xE70DE006);
	r2 = D(r2, s0_2_1, 0x08FAE317, 0x0FF408F3, 0xFFBEC5F4, 0x0AE6FD0B);
	r3 = D(r3, s0_2_1, 0xF8ECFA27, 0x06F4E706, 0xCF81CBEF, 0xFD1F0200);
	r4 = D(r4, s0_2_1, 0xEF860FF0, 0x31042612, 0xC8001113, 0xD5814902);
	r5 = D(r5, s0_2_1, 0xFC2C33F9, 0xF4F30500, 0x3665F816, 0x25F4E50F);
	r6 = D(r6, s0_2_1, 0xF6FE233A, 0xE48107E9, 0xEC241804, 0x02EAFA01);
	r7 = D(r7, s0_2_1, 0x0A2FFF51, 0xF8AB0914, 0x07FD08FA, 0x05811605);
	r0 = D(r0, s0_2_2, 0xE0F5FA02, 0x06FBFB11, 0x091AF803, 0x07F907FA);
	r1 = D(r1, s0_2_2, 0xFAE20200, 0x1F52D8FA, 0xEA8A1303, 0x028B061A);
	r2 = D(r2, s0_2_2, 0xEE1E15FF, 0xF586F71B, 0xED81FE05, 0xDBD30B09);
	r3 = D(r3, s0_2_2, 0x08811222, 0x30F629F8, 0x1A2618DE, 0x011D0807);
	r4 = D(r4, s0_2_2, 0x00E9D720, 0xC9D5EBD3, 0x109CDBEB, 0x16180ED9);
	r5 = D(r5, s0_2_2, 0x31814B11, 0x05FD0101, 0x39F1CC18, 0x0506F70D);
	r6 = D(r6, s0_2_2, 0xD9EC09ED, 0x1913FC0F, 0xFF09EF01, 0x180EF9F9);
	r7 = D(r7, s0_2_2, 0xF629FBFF, 0x02DB09FD, 0xF90A02FC, 0xE7F61AF2);
	r0 = D(r0, s1_0_0, 0x520638E5, 0xF1EAF7F1, 0x0C01FB00, 0xEC0001F4);
	r1 = D(r1, s1_0_0, 0xC6E52DC9, 0x00F80805, 0xFD07040B, 0xEA12FEEC);
	r2 = D(r2, s1_0_0, 0xC70A0EEF, 0x18E431F5, 0x070713E3, 0x08E8F002);
	r3 = D(r3, s1_0_0, 0x331B020F, 0x7FEB0618, 0xEEEE0908, 0xF114D619);
	r4 = D(r4, s1_0_0, 0xADED15DA, 0xA6F81103, 0xFCFEFAF9, 0x57C3C6FD);
	r5 = D(r5, s1_0_0, 0xEA10E8F8, 0x03FEF801, 0x810AF4EB, 0x08EFFE0C);
	r6 = D(r6, s1_0_0, 0xB81B00D0, 0x0AE6ACEB, 0x4C223D0D, 0x0D010C17);
	r7 = D(r7, s1_0_0, 0x815081F5, 0xC6FE230B, 0x0DFFECFA, 0x35F44C01);
	r0 = D(r0, s1_0_1, 0xBD1EB30C, 0x31144705, 0x02F7F5EE, 0xEA040703);
	r1 = D(r1, s1_0_1, 0xF50B8104, 0x340D0304, 0xF719280C, 0xF62E000D);
	r2 = D(r2, s1_0_1, 0x0802B0ED, 0x433BF1E8, 0xE1EBDA02, 0xB6FA9902);
	r3 = D(r3, s1_0_1, 0x14001625, 0x13150F09, 0xF808F8DE, 0x08011EFB);
	r4 = D(r4, s1_0_1, 0x1D1CE315, 0x43F70703, 0xF0F7E8FA, 0x01F3CA1C);
	r5 = D(r5, s1_0_1, 0x2C0BCEF4, 0xF7FE06FB, 0x81E7E3CC, 0xEDEAEE0B);
	r6 = D(r6, s1_0_1, 0x34F32600, 0xCCF54AFB, 0x811681D2, 0xE20204F9);
	r7 = D(r7, s1_0_1, 0x37FB393D, 0xFEF0D1D4, 0xA404D5F3, 0x8DE881F0);
	r0 = D(r0, s1_0_2, 0x10F22AE8, 0x1F0F2406, 0x18FFF801, 0x0F000C02);
	r1 = D(r1, s1_0_2, 0xBD001BF9, 0xE4F5FEFA, 0xEB1801E5, 0xD5FD08F4);
	r2 = D(r2, s1_0_2, 0x500FC4E3, 0x92ECE72B, 0x1A2C16F5, 0x1FFC0D00);
	r3 = D(r3, s1_0_2, 0x09F1F51B, 0xA0F51CDD, 0x0911070D, 0xD5041102);
	r4 = D(r4, s1_0_2, 0x1D1AF511, 0xE106CE13, 0xFDFF01F2, 0x11E22619);
	r5 = D(r5, s1_0_2, 0xCE240901, 0x03FDFC00, 0x201A0B4A, 0xFDFE1803);
	r6 = D(r6, s1_0_2, 0x164C1310, 0xFE0D1606, 0xE801450B, 0x06040900);
	r7 = D(r7, s1_0_2, 0xDF1AF210, 0xFB07FCE4, 0xFD040203, 0xFB0D38FB);
	r0 = D(r0, s1_1_0, 0xED02E608, 0x3EFEDCE8, 0xD4F703F8, 0xF0F5E3FC);
	r1 = D(r1, s1_1_0, 0xF91CEDE5, 0x97DBE300, 0xBD1311F8, 0xD409EAFA);
	r2 = D(r2, s1_1_0, 0x06F40F00, 0x8C3106D3, 0xEEF91609, 0x1FDE07D5);
	r3 = D(r3, s1_1_0, 0x15211E21, 0x0D1730FF, 0xFFC21AD3, 0x0EF918EA);
	r4 = D(r4, s1_1_0, 0x81AA0018, 0x2330D907, 0x1000F306, 0x260DD2D9);
	r5 = D(r5, s1_1_0, 0x1B0C16DF, 0x07FEF301, 0x3E2D4409, 0x1D07E30E);
	r6 = D(r6, s1_1_0, 0x257FF0D2, 0x7FEB5203, 0x9BDC0400, 0x18F01E21);
	r7 = D(r7, s1_1_0, 0x4B81D617, 0xD4EDF304, 0x2A0121FB, 0xB2E3DCCF);
	r0 = D(r0, s1_1_1, 0xF5F20307, 0x51F61606, 0xF3FB0321, 0x20055EF7);
	r1 = D(r1, s1_1_1, 0x7FF11A34, 0x08F52EC6, 0x040EA829, 0x69F82513);
	r2 = D(r2, s1_1_1, 0xA8F8D5ED, 0x02E1E808, 0xC9AEE4E5, 0x2DFCFCE4);
	r3 = D(r3, s1_1_1, 0xD9EBEBEF, 0x81F4F5D2, 0x30592313, 0x0C0FEE02);
	r4 = D(r4, s1_1_1, 0x191814F6, 0xF50F121F, 0x29FF3709, 0xEB6A0EEA);
	r5 = D(r5, s1_1_1, 0xBBF2E310, 0x0D0022F1, 0x81F8E4CB, 0x75F7611A);
	r6 = D(r6, s1_1_1, 0x6CE74A05, 0xB40CB203, 0x7F9E5531, 0xD10401F6);
	r7 = D(r7, s1_1_1, 0xC2024504, 0x74211A22, 0x1CFDF20F, 0x160231FE);
	r0 = D(r0, s1_1_2, 0x81101606, 0x30001507, 0x0701F7FE, 0xFFFED302);
	r1 = D(r1, s1_1_2, 0x19F90BFB, 0x40EB151A, 0x13FBD00C, 0x0CE00307);
	r2 = D(r2, s1_1_2, 0x35002647, 0x22ED20B6, 0xD32223ED, 0xE9F91806);
	r3 = D(r3, s1_1_2, 0xBEFC05FE, 0xC9EBD3DC, 0x01F4D411, 0x1208F606);
	r4 = D(r4, s1_1_2, 0xAD1AEAFC, 0x08031B0D, 0x0D16C7F6, 0x0A14FCFE);
	r5 = D(r5, s1_1_2, 0xF6CAFFC1, 0xF604EAFC, 0x330ACCAF, 0x0BF1F100);
	r6 = D(r6, s1_1_2, 0xD411CCBB, 0xDDFEFBF6, 0x25D5DDF2, 0x09FFE204);
	r7 = D(r7, s1_1_2, 0x25F213F0, 0xE9E8F1F6, 0xE8F5F8F6, 0x38131504);
	r0 = D(r0, s1_2_0, 0x3BEA04FD, 0xBF28FBFE, 0x0E020406, 0xF5FDEF0C);
	r1 = D(r1, s1_2_0, 0xD503FCF9, 0x2009D2FB, 0x340E01FE, 0x1600FBF3);
	r2 = D(r2, s1_2_0, 0x2AF2F9FD, 0x1BE006EC, 0x50F61D14, 0x04070508);
	r3 = D(r3, s1_2_0, 0xF2FCF1F1, 0x81E109DF, 0x0FE91AD9, 0xEAFE0714);
	r4 = D(r4, s1_2_0, 0x812E150C, 0x25E112DF, 0xF10603E6, 0x12AEF703);
	r5 = D(r5, s1_2_0, 0x18F10BEC, 0xE10405F8, 0xCDC2D1F6, 0x040201F4);
	r6 = D(r6, s1_2_0, 0x3242CF3F, 0x10FD110E, 0xB4070FFE, 0xEB000BFB);
	r7 = D(r7, s1_2_0, 0x5308E5FB, 0x17FF01F6, 0xEDF4FC0D, 0x21050BE9);
	r0 = D(r0, s1_2_1, 0x81F4EE00, 0xA6ECF5E7, 0xF6FDF900, 0xF716F0F6);
	r1 = D(r1, s1_2_1, 0x06040909, 0x91FC06E3, 0x2BF210F8, 0xCFF60C05);
	r2 = D(r2, s1_2_1, 0xA5F60208, 0x22BC3408, 0xFFDAF5EB, 0x0C070BF2);
	r3 = D(r3, s1_2_1, 0xE6D70A05, 0xEAF6BFDB, 0xE9F3043A, 0x0DE8FFF2);
	r4 = D(r4, s1_2_1, 0xAEFC03FF, 0x1CCA0900, 0x170400EB, 0x5A3CF2BE);
	r5 = D(r5, s1_2_1, 0xEAD1F4C7, 0xBE10E2FD, 0xD5B60D07, 0x9B14FBE8);
	r6 = D(r6, s1_2_1, 0x81F413F1, 0xCBFBFADB, 0xF72BE2E6, 0xE902F7F2);
	r7 = D(r7, s1_2_1, 0x81D716E7, 0xCA03FD09, 0x13FDFDFF, 0x4508FC09);
	r0 = D(r0, s1_2_2, 0x0B00000C, 0xE505FFFC, 0x05070303, 0x0E09FFF7);
	r1 = D(r1, s1_2_2, 0xDFFF03FA, 0xE40B1FE1, 0xF00F0503, 0x41050EE9);
	r2 = D(r2, s1_2_2, 0x8136011D, 0xE902D9F2, 0x152612CD, 0x1005FDF9);
	r3 = D(r3, s1_2_2, 0xF309DEED, 0x26DBE7F0, 0x1118E9DB, 0xFCF9FD0C);
	r4 = D(r4, s1_2_2, 0x11EBF1F4, 0x39C4DDB1, 0xECF10417, 0xE90E0B04);
	r5 = D(r5, s1_2_2, 0xF8ECF6FF, 0x55FD1617, 0x4C12E950, 0xF4FB04F2);
	r6 = D(r6, s1_2_2, 0x1554D207, 0x0D0205F7, 0xF62DFF11, 0xFA06FBFD);
	r7 = D(r7, s1_2_2, 0x1E1F0B1B, 0xDE0EF500, 0xF2FB01FF, 0xDF0D0503);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFBF6FE0A, 0xE9F51AD3, 0xFF0009FF, 0xFE000301);
	r1 = D(r1, s0_0_0, 0xF8E5120B, 0x08190DDC, 0x090B0A09, 0xEDFD12E8);
	r2 = D(r2, s0_0_0, 0xFF13F2F1, 0x057F3EFB, 0xF2F20CF7, 0xF40E0FE4);
	r3 = D(r3, s0_0_0, 0xF5031A04, 0xE9100C0A, 0x34DEDCF4, 0x0D04FFFF);
	r4 = D(r4, s0_0_0, 0xEC11F4F8, 0xFAEC18FD, 0x070DF5F7, 0xEEC7FCF6);
	r5 = D(r5, s0_0_0, 0xF622F601, 0x0105FA02, 0xEBF4F4D4, 0x06F607FB);
	r6 = D(r6, s0_0_0, 0xF9350CE5, 0x0FEB2AD5, 0x12EB03FE, 0x04E401FD);
	r7 = D(r7, s0_0_0, 0xED1839D5, 0xFB170216, 0x05EBFCEE, 0xEE201E00);
	r0 = D(r0, s0_0_1, 0xF10C100F, 0xF90270EA, 0x00060405, 0x0310FFF9);
	r1 = D(r1, s0_0_1, 0x05160CE8, 0xEE24FCF9, 0x0B1EFE10, 0xEE0FF624);
	r2 = D(r2, s0_0_1, 0x12012122, 0xF73DD2EE, 0x1211F4F4, 0xFF23FC01);
	r3 = D(r3, s0_0_1, 0x0A02EA0F, 0x0319F012, 0x02E41F0E, 0xFDF9F005);
	r4 = D(r4, s0_0_1, 0x0206E8F8, 0xFBE3E72C, 0xF9E90E0C, 0xEF4D81CE);
	r5 = D(r5, s0_0_1, 0xF3FA01E8, 0xFE07FC02, 0xF9EE0F1D, 0xF9FCEADF);
	r6 = D(r6, s0_0_1, 0x16ED19D7, 0x0008E002, 0x22022124, 0x03EAFBFE);
	r7 = D(r7, s0_0_1, 0xEB2C812A, 0xF2C2F809, 0x03160203, 0x194648F2);
	r0 = D(r0, s0_0_2, 0x023930F3, 0xF81F1B12, 0x030F05FF, 0x04F50C04);
	r1 = D(r1, s0_0_2, 0x11FC0706, 0x0552F30B, 0x02FFDFF8, 0x07ED0FFC);
	r2 = D(r2, s0_0_2, 0x1233E90C, 0x0343DB0B, 0x042126FE, 0xFEF42F06);
	r3 = D(r3, s0_0_2, 0xFE23FFF5, 0x0617EBF2, 0x040F32FA, 0xF7E903F9);
	r4 = D(r4, s0_0_2, 0xFE13020E, 0xF10EF805, 0x09C30203, 0xFB213208);
	r5 = D(r5, s0_0_2, 0x003AF504, 0x000C03FE, 0xEE47C7F9, 0xFC0411FA);
	r6 = D(r6, s0_0_2, 0xF918040C, 0x06E1F508, 0x1AFBC50E, 0xFD02F701);
	r7 = D(r7, s0_0_2, 0x032AD016, 0x02E6FBF4, 0x04FAFBF8, 0x0FF2DD02);
	r0 = D(r0, s0_1_0, 0xFFBCF024, 0x1546DBF7, 0xFF08FFE9, 0xFFFB0103);
	r1 = D(r1, s0_1_0, 0xF704050A, 0xEFF2D60D, 0xFBEB13F0, 0x090420EC);
	r2 = D(r2, s0_1_0, 0xFC19CE36, 0x1AAA21D1, 0xF00D021A, 0xF104F716);
	r3 = D(r3, s0_1_0, 0xFC02F40E, 0xF00107EB, 0x1E16D51A, 0x0616EEF9);
	r4 = D(r4, s0_1_0, 0xFC778181, 0xE210FFC6, 0x11C8E507, 0xE3090A94);
	r5 = D(r5, s0_1_0, 0xFF071C02, 0x02050202, 0x0F169CF7, 0x06030C0F);
	r6 = D(r6, s0_1_0, 0x00C82F1A, 0x13D3EA14, 0xF325A681, 0x10E90500);
	r7 = D(r7, s0_1_0, 0x0D39FFED, 0xF3FBEB18, 0x0EF00D1C, 0x0B05F8EE);
	r0 = D(r0, s0_1_1, 0xD10EFEF9, 0xFA90D918, 0xFDECEF06, 0x0117FDE8);
	r1 = D(r1, s0_1_1, 0xE8090637, 0xE58CEEF0, 0x05D60310, 0xCCDBE00F);
	r2 = D(r2, s0_1_1, 0xFD01E931, 0xFBCA4111, 0x19ECE9F3, 0xFCEF25FA);
	r3 = D(r3, s0_1_1, 0xC8F04D13, 0xF70C1B10, 0xFAE3EE26, 0x1054FCF5);
	r4 = D(r4, s0_1_1, 0xFA81812B, 0x12EBFB11, 0xEEDEF0EB, 0xFDA200D6);
	r5 = D(r5, s0_1_1, 0x0600F912, 0xFE0AFD03, 0x0B4CF3C4, 0xF104181E);
	r6 = D(r6, s0_1_1, 0xFAFF9177, 0x1378F61B, 0xE2F431EE, 0x023CFCF2);
	r7 = D(r7, s0_1_1, 0xE7EF7FE9, 0x17D84AE2, 0xF146FDF8, 0x1281DBB4);
	r0 = D(r0, s0_1_2, 0x19EDF504, 0xEA0CEAF7, 0xFD14E6FC, 0x0413F10D);
	r1 = D(r1, s0_1_2, 0xFCF33002, 0xF8812801, 0x071A2AEB, 0xFE53191F);
	r2 = D(r2, s0_1_2, 0xE10F002D, 0xF38E15B4, 0x429D1114, 0x01EA8F07);
	r3 = D(r3, s0_1_2, 0x0003C8E1, 0x13ECE0FC, 0x0917D6ED, 0x00E40E02);
	r4 = D(r4, s0_1_2, 0x2100190F, 0xEC122DF2, 0x0927EB0D, 0x071ADD1F);
	r5 = D(r5, s0_1_2, 0x06BE53AF, 0xFC10FDF8, 0x0ED9ACF4, 0x09FEE801);
	r6 = D(r6, s0_1_2, 0x10F12BF8, 0x09E9E8FC, 0xCFE8F3DE, 0x04EC04FE);
	r7 = D(r7, s0_1_2, 0xEBF70CDF, 0xF30610E8, 0x02EBEDFB, 0xE4112401);
	r0 = D(r0, s0_2_0, 0x02F424FE, 0xF3FFE1F8, 0x00030804, 0x08F208FB);
	r1 = D(r1, s0_2_0, 0x000604F8, 0x03FEF104, 0x02FEEDF7, 0x060B13EB);
	r2 = D(r2, s0_2_0, 0x0CF60BE1, 0xF5E6ED09, 0x071E6DE3, 0x0008FC08);
	r3 = D(r3, s0_2_0, 0x09F713E0, 0x16070822, 0xF60DEAF0, 0x09DEECF7);
	r4 = D(r4, s0_2_0, 0x13DB7017, 0xFCF2F414, 0xF10A36E1, 0xE1F33881);
	r5 = D(r5, s0_2_0, 0xFC09FDF5, 0x0302FBFD, 0x0AC90BDB, 0x01FCF5F3);
	r6 = D(r6, s0_2_0, 0xFC06C9DF, 0x09EE27F1, 0xF81BE51F, 0x0BF0F115);
	r7 = D(r7, s0_2_0, 0xFFF2FD25, 0xFC0EE305, 0x02FC12F7, 0xF416AE06);
	r0 = D(r0, s0_2_1, 0x1103EBF7, 0x1BF0DBF5, 0x00FBE8FD, 0x100BF8F6);
	r1 = D(r1, s0_2_1, 0xFF0A34F0, 0xEA1EDF2D, 0xEA01E9E7, 0xF8F3AE16);
	r2 = D(r2, s0_2_1, 0xF820F60A, 0xF5CAAE08, 0x08FD93EB, 0x041A0D0A);
	r3 = D(r3, s0_2_1, 0x2C0A14E4, 0x2BDF13A3, 0x0E530AF8, 0xF9F3F006);
	r4 = D(r4, s0_2_1, 0x0DEC8120, 0xDBF32D12, 0x232F0528, 0xE9812A1C);
	r5 = D(r5, s0_2_1, 0xF700F6E6, 0xF510F707, 0x17D74351, 0x070F1D0C);
	r6 = D(r6, s0_2_1, 0xFB1032CE, 0x161C2F06, 0xF7E61A04, 0x0E5319FB);
	r7 = D(r7, s0_2_1, 0x05F702F0, 0x01EF2C0D, 0x000526F7, 0xEDFDF6F6);
	r0 = D(r0, s0_2_2, 0xF21623F7, 0x13012DF9, 0x00090AFE, 0x02FEDBFE);
	r1 = D(r1, s0_2_2, 0x02177DEB, 0xF713FDEE, 0xEFFBFE05, 0x01E0EBF7);
	r2 = D(r2, s0_2_2, 0xE3EEE415, 0x24D215EE, 0x05EFFFA0, 0x0BDA0D09);
	r3 = D(r3, s0_2_2, 0x00E13EEF, 0xF599F924, 0xF3D12E0E, 0xFFF6F002);
	r4 = D(r4, s0_2_2, 0x0C15FFEE, 0x4CD7301F, 0xE3EFF60C, 0xFB0E09E5);
	r5 = D(r5, s0_2_2, 0xFC81F3DE, 0xF39F1508, 0x03E885E9, 0x09030CFC);
	r6 = D(r6, s0_2_2, 0x090ECAF7, 0xFEF9FEFD, 0x2A2015E5, 0xFF050601);
	r7 = D(r7, s0_2_2, 0x09E9F507, 0x140A1C01, 0xFEFB0603, 0x100C3404);
	r0 = D(r0, s1_0_0, 0x55052CFD, 0x58E2EE1A, 0x110406FB, 0xF907F9FE);
	r1 = D(r1, s1_0_0, 0xC0070601, 0xD60EF7F9, 0xC30300F8, 0xE600F604);
	r2 = D(r2, s1_0_0, 0xDF1DF6F7, 0xDA29CAFF, 0x2C0904E0, 0x25F3000C);
	r3 = D(r3, s1_0_0, 0x35ECEE05, 0x62DCFA0D, 0xDEEFDEE2, 0xCDEDF0F0);
	r4 = D(r4, s1_0_0, 0xE0F90A0C, 0x2A1813F6, 0x120A01FD, 0x8121812A);
	r5 = D(r5, s1_0_0, 0x22F90500, 0x01FFFEFF, 0x72E0C90C, 0xF4FB02FE);
	r6 = D(r6, s1_0_0, 0x17DE09FD, 0x05DCF4FB, 0x063EE1DE, 0xF4FCFF01);
	r7 = D(r7, s1_0_0, 0x3F3412CD, 0xCAFD0C03, 0xF104F8FE, 0x88D5F60E);
	r0 = D(r0, s1_0_1, 0x44F1070E, 0xFFF8EC06, 0x1D07F704, 0x10010D07);
	r1 = D(r1, s1_0_1, 0xEE17F2FD, 0x0518F60E, 0x0B07FCEE, 0xDBECFD08);
	r2 = D(r2, s1_0_1, 0x1E1F0FF0, 0x2BC8F60B, 0x1FF1F624, 0xFFF91201);
	r3 = D(r3, s1_0_1, 0xE210F3FE, 0xD5F4FE01, 0xB5D7F635, 0xECF7FF08);
	r4 = D(r4, s1_0_1, 0x24FAF3F9, 0xF41617FE, 0x0B11EE09, 0x30EEFE09);
	r5 = D(r5, s1_0_1, 0x0C06EE07, 0x0100FF02, 0xF2CBF836, 0xF90B0407);
	r6 = D(r6, s1_0_1, 0x43E9F001, 0x1FEBF617, 0x84390B08, 0xFEFEFBFE);
	r7 = D(r7, s1_0_1, 0x101905FD, 0xE401FBF9, 0xF9FFF504, 0x1B0504EA);
	r0 = D(r0, s1_0_2, 0xF00BF506, 0x0B090120, 0x0B03FD02, 0x030300FB);
	r1 = D(r1, s1_0_2, 0x160AFDFD, 0xEC1AFCFA, 0xE4FC09FE, 0x08000001);
	r2 = D(r2, s1_0_2, 0xCFF40CFD, 0x43ECF21A, 0x0B02FEFF, 0x180FFEF9);
	r3 = D(r3, s1_0_2, 0x1A12F40F, 0x37EBFC0E, 0x290807F7, 0xF0090000);
	r4 = D(r4, s1_0_2, 0x140BFD05, 0xE70C04EA, 0xE010F4FB, 0xAD08F40C);
	r5 = D(r5, s1_0_2, 0xDF2DE904, 0xFF020100, 0xE00EF600, 0xF6FEFFFE);
	r6 = D(r6, s1_0_2, 0xF914F7FD, 0x0D06FCFF, 0x140305C3, 0x07FCFF04);
	r7 = D(r7, s1_0_2, 0x4730FFEA, 0x1C0AF903, 0x08F60301, 0x11030803);
	r0 = D(r0, s1_1_0, 0xD611EC17, 0x7FD311E7, 0x03FE0A05, 0xC318FAF1);
	r1 = D(r1, s1_1_0, 0x650500F5, 0x7FEF1214, 0x220EF6FE, 0xEDFA1107);
	r2 = D(r2, s1_1_0, 0x77120EF4, 0x7FFA3911, 0x810A0FFD, 0x81EFF7FD);
	r3 = D(r3, s1_1_0, 0x37F00AFE, 0x7FCBFD10, 0xCB03DAB8, 0x1D06DEF1);
	r4 = D(r4, s1_1_0, 0xA20D02B5, 0x231B210A, 0xEC17D710, 0x7F81AA0F);
	r5 = D(r5, s1_1_0, 0xF4060317, 0xF1FF0600, 0x81920181, 0xDAFAF6F9);
	r6 = D(r6, s1_1_0, 0x7FE5E8AD, 0xD3FD81EA, 0x81F6EED1, 0xF10CF7EB);
	r7 = D(r7, s1_1_0, 0xC7CA1081, 0x1EF500D9, 0x8609BBE6, 0x81F90BCB);
	r0 = D(r0, s1_1_1, 0xEEDF2D05, 0x03DD131B, 0x200500EF, 0x1101FFFA);
	r1 = D(r1, s1_1_1, 0xF7EAFCF0, 0xD7EBEB2B, 0xE5EB13F8, 0x97EE0CE3);
	r2 = D(r2, s1_1_1, 0x7FEADA44, 0x8AECF107, 0x8126DDCD, 0xCF0CFDA8);
	r3 = D(r3, s1_1_1, 0x50FEF634, 0xB9E401FF, 0x254B3381, 0xE0EAD915);
	r4 = D(r4, s1_1_1, 0xDCFEB496, 0xF4142AFB, 0x38EEEC23, 0x50C3014A);
	r5 = D(r5, s1_1_1, 0xF0E73135, 0xFD0606FE, 0xACFD18CB, 0xFB13F1D4);
	r6 = D(r6, s1_1_1, 0x8112C643, 0x0FF92DDC, 0xC838EC7F, 0x040C08FF);
	r7 = D(r7, s1_1_1, 0x98F516D8, 0x3007DFE1, 0xE51502CC, 0xD0CEEE81);
	r0 = D(r0, s1_1_2, 0xF2130DD5, 0xEC0DF1E9, 0x0D0B000B, 0x0507FDF9);
	r1 = D(r1, s1_1_2, 0xCF0E15EC, 0x132B19D0, 0x080113E4, 0xE3EA20F5);
	r2 = D(r2, s1_1_2, 0x3703FBFD, 0xBE04E0EA, 0x22203AE5, 0x0407F9F9);
	r3 = D(r3, s1_1_2, 0xDC06F32F, 0x86F5DFF7, 0x5913D608, 0x01FDF90F);
	r4 = D(r4, s1_1_2, 0x35FF0226, 0xEFCF0302, 0xEE0619DB, 0x050B32D7);
	r5 = D(r5, s1_1_2, 0xFBFF16E2, 0x0301FB07, 0x29E02501, 0x12F305DF);
	r6 = D(r6, s1_1_2, 0x01E11994, 0x000104FB, 0xFABA0CD9, 0xF5FE05FB);
	r7 = D(r7, s1_1_2, 0xD6E30CC6, 0xACF109F7, 0xF4030312, 0x33E3EAED);
	r0 = D(r0, s1_2_0, 0x811416FF, 0xC40041DB, 0x15FE0303, 0x2F04140F);
	r1 = D(r1, s1_2_0, 0x7F061103, 0xFD0003F5, 0x8F16F9E8, 0x40041204);
	r2 = D(r2, s1_2_0, 0x81110AF2, 0x5A14D40C, 0xC5260C16, 0x03090508);
	r3 = D(r3, s1_2_0, 0xDCF9E7EF, 0x81C8E407, 0x1114DA22, 0x79060AEB);
	r4 = D(r4, s1_2_0, 0x8103DC0E, 0x7F31FF3F, 0x45F2BE0E, 0x6E2ABF06);
	r5 = D(r5, s1_2_0, 0x9A23F9F2, 0x03FFF80B, 0x81F9E406, 0x5102FE09);
	r6 = D(r6, s1_2_0, 0xDE0BF4A0, 0x67FFD006, 0x6DF61CF2, 0x1301E208);
	r7 = D(r7, s1_2_0, 0xF2070CE8, 0x3B18FCFB, 0x7FFD03FD, 0x7F080AF8);
	r0 = D(r0, s1_2_1, 0x81EEFAFA, 0x4FF925FA, 0xEEFFFD0A, 0xE706165C);
	r1 = D(r1, s1_2_1, 0x5BFBFDFB, 0x46E0270D, 0x7FE5D3DF, 0x35FCF6F1);
	r2 = D(r2, s1_2_1, 0x36E7E4F8, 0x3A0AD817, 0xAF0DED01, 0x2D05FCDE);
	r3 = D(r3, s1_2_1, 0xD01A2C92, 0x19E10C19, 0x04D7EB13, 0xE7FE12FE);
	r4 = D(r4, s1_2_1, 0x81F2F3EC, 0xDFDE9C7F, 0x96DB2522, 0x0DF2EC54);
	r5 = D(r5, s1_2_1, 0xFC0F2F1B, 0x300470FA, 0x81FEF40B, 0xFBF60C6D);
	r6 = D(r6, s1_2_1, 0x10CDF66F, 0x9A1813E3, 0xEBF3FDDE, 0x07030030);
	r7 = D(r7, s1_2_1, 0x6DDE1615, 0xB0F7FFFE, 0xED040304, 0x32FEFA02);
	r0 = D(r0, s1_2_2, 0xA5F105F1, 0x3FF4FFF1, 0x1D020401, 0x1112FB0E);
	r1 = D(r1, s1_2_2, 0x360DFEF5, 0xD11411FD, 0xC7010928, 0x4B0AF80D);
	r2 = D(r2, s1_2_2, 0x8DEC0481, 0xE8D938E2, 0x1010FEC3, 0x17F8F103);
	r3 = D(r3, s1_2_2, 0xCE111CD8, 0x33CCCFF7, 0x412619E0, 0xEA03030D);
	r4 = D(r4, s1_2_2, 0x22030108, 0xDFE1ED81, 0x052CFC18, 0xED23F009);
	r5 = D(r5, s1_2_2, 0x95071081, 0xF905E9EB, 0x47F0F215, 0xF7F403FB);
	r6 = D(r6, s1_2_2, 0x0EF10EB0, 0x1602FC0D, 0xE3FBF908, 0x01FE000F);
	r7 = D(r7, s1_2_2, 0xF3FFF10B, 0xFCF308F3, 0xEC02FF00, 0x2AF309F9);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x17020A38, 0xF5051002, 0xFEFF03F7, 0xFFFEFE05);
	r1 = D(r1, s0_0_0, 0xFCDFFD0B, 0x0906130F, 0x09DB00F0, 0x08F306C9);
	r2 = D(r2, s0_0_0, 0x14D2EA10, 0xE603E8FF, 0x003DF655, 0xFFF1FDBE);
	r3 = D(r3, s0_0_0, 0x051419EE, 0xF7140D1F, 0xF7E6FEC6, 0xE90BF41D);
	r4 = D(r4, s0_0_0, 0x1BFA1012, 0x02F70CE7, 0x05E1F3D6, 0x7FD2E3EA);
	r5 = D(r5, s0_0_0, 0xE904020B, 0x00020104, 0xE5FBCC3D, 0xF80201EC);
	r6 = D(r6, s0_0_0, 0xED06EFE1, 0xF70906EE, 0x300BF6CC, 0xFB0E00F0);
	r7 = D(r7, s0_0_0, 0x16EDA21D, 0x02FCFE1D, 0x0804F81F, 0x2B03F822);
	r0 = D(r0, s0_0_1, 0xF6F3181A, 0xFB15910B, 0x00F516EF, 0x02F70803);
	r1 = D(r1, s0_0_1, 0x03ECDD2C, 0x1811FDF0, 0xEA17E4E1, 0xEBEE1281);
	r2 = D(r2, s0_0_1, 0xDCCD14EF, 0xEFF92BC7, 0xF6051622, 0x10DDF881);
	r3 = D(r3, s0_0_1, 0xEE28F032, 0xFD10DCDF, 0xFEB7D30F, 0xF909F20C);
	r4 = D(r4, s0_0_1, 0x16150481, 0x10302926, 0x0EFA0AED, 0xE30929E1);
	r5 = D(r5, s0_0_1, 0x052D1DFD, 0xFEFB05FD, 0xECF7B8D5, 0xF61FF5E5);
	r6 = D(r6, s0_0_1, 0x0C00F42E, 0xFEF4F2E5, 0xFFE7F190, 0xFCF8FD02);
	r7 = D(r7, s0_0_1, 0xA7EB3FCC, 0xF1F40BEF, 0x02EA18E1, 0x02EAF621);
	r0 = D(r0, s0_0_2, 0x1F182CFB, 0x0205E910, 0x0105290D, 0x0401FF09);
	r1 = D(r1, s0_0_2, 0x0BDA0FE7, 0xD9F1E914, 0xFAE5BBF5, 0x0B0CD0E7);
	r2 = D(r2, s0_0_2, 0x001FFC1B, 0x2004F811, 0x140BB8FB, 0x13EC1E3C);
	r3 = D(r3, s0_0_2, 0x28D20621, 0xF9EE0305, 0x2F071909, 0xFDFD1CFB);
	r4 = D(r4, s0_0_2, 0x1400F334, 0xFFEDE0E1, 0xFFFEE3FF, 0x231706F8);
	r5 = D(r5, s0_0_2, 0x1AF2F6CA, 0xFFFCFCFB, 0x24FC45FB, 0x020EE011);
	r6 = D(r6, s0_0_2, 0x0FDACB0C, 0x0DF000E6, 0xF6EF31D3, 0xFF070903);
	r7 = D(r7, s0_0_2, 0xF40ECC0B, 0xF60C14AD, 0x03F43404, 0xFEFF17FA);
	r0 = D(r0, s0_1_0, 0x0223FF2F, 0xD6F52181, 0xFDFB00F7, 0xF7FFFC06);
	r1 = D(r1, s0_1_0, 0xDC0AFD0C, 0x0FEC0603, 0x17FA0CE8, 0x24F5FC17);
	r2 = D(r2, s0_1_0, 0xDD3CF636, 0x2708215F, 0x2A15EDF4, 0xF602FADD);
	r3 = D(r3, s0_1_0, 0x2BFB040C, 0x0EF403DA, 0xD9FD123B, 0x14020F18);
	r4 = D(r4, s0_1_0, 0xDDD30619, 0xF710FB5E, 0x2621F4E0, 0x81C3D544);
	r5 = D(r5, s0_1_0, 0xEEF4E9E2, 0x020200EA, 0xDC030ED8, 0xFAFF0001);
	r6 = D(r6, s0_1_0, 0x0D14ECC0, 0x094318E1, 0x97F1E0FC, 0xF10A0AFC);
	r7 = D(r7, s0_1_0, 0xE825B5C7, 0x30E9F307, 0xFD0F0107, 0xE2F1FEF5);
	r0 = D(r0, s0_1_1, 0x1006F3AC, 0x030CE1FD, 0x0708FEF9, 0x010404F8);
	r1 = D(r1, s0_1_1, 0xF27F0EFA, 0xEE030504, 0x04440A81, 0x00F522D0);
	r2 = D(r2, s0_1_1, 0x52F9FC30, 0xDAEAF3BB, 0x0CACFAF3, 0x0F12F6C1);
	r3 = D(r3, s0_1_1, 0xBE5E1721, 0xE8FDD6FC, 0x382FD409, 0xFDFD19F3);
	r4 = D(r4, s0_1_1, 0xEE33C9F3, 0x0EDF180E, 0xFFE11B40, 0x20C8E729);
	r5 = D(r5, s0_1_1, 0xE701EC22, 0x04FB0005, 0x10FC2000, 0x0336DC0E);
	r6 = D(r6, s0_1_1, 0xF407409F, 0xE1E1BB1B, 0x020CEAC0, 0x06EAB709);
	r7 = D(r7, s0_1_1, 0x04F05CCC, 0x0B5DF9EA, 0xF6FCFE05, 0xED030A10);
	r0 = D(r0, s0_1_2, 0xE6DEFE09, 0x030FCEF8, 0xFE02FBFF, 0x020EEB00);
	r1 = D(r1, s0_1_2, 0x11FEF108, 0xE91103FC, 0xFEDE2811, 0xF107DB2A);
	r2 = D(r2, s0_1_2, 0xF551190E, 0x00F5F31B, 0xFCB4EE07, 0xFB1AFAFB);
	r3 = D(r3, s0_1_2, 0x09F4FD09, 0xEF0E2504, 0x0421D4FB, 0x060207F6);
	r4 = D(r4, s0_1_2, 0x0D04C40D, 0xE3FDD5E9, 0x20FE8114, 0xEFE77F20);
	r5 = D(r5, s0_1_2, 0xFF0008FB, 0xFC07F207, 0x07E52811, 0xFDF8CA0F);
	r6 = D(r6, s0_1_2, 0xFB16810F, 0x0B072602, 0xF513F330, 0x020AE50C);
	r7 = D(r7, s0_1_2, 0x1708F909, 0xFEECE70C, 0x03080501, 0x090ED210);
	r0 = D(r0, s0_2_0, 0xFD06F701, 0x32EB03D7, 0x05000105, 0xFA07FDFD);
	r1 = D(r1, s0_2_0, 0xEEE20723, 0x02220408, 0xE9FDFC2F, 0xFF0300F6);
	r2 = D(r2, s0_2_0, 0xFCF5F503, 0x0001022A, 0x1A40033A, 0xE9FFFC0F);
	r3 = D(r3, s0_2_0, 0xD5CFF0F1, 0x16ED1FFA, 0xEF0AED31, 0x06F8FAFD);
	r4 = D(r4, s0_2_0, 0xEAD708CC, 0x1BED00E2, 0xD1160DFC, 0x8112C404);
	r5 = D(r5, s0_2_0, 0x1304F0BF, 0xFDF801ED, 0x1E0FF3CD, 0x0CEEFEE9);
	r6 = D(r6, s0_2_0, 0xE807F92E, 0xF4EA06DE, 0x38FB01FE, 0x170E03FD);
	r7 = D(r7, s0_2_0, 0x25120519, 0x03FFF0BA, 0x02080009, 0xDCFB09E3);
	r0 = D(r0, s0_2_1, 0xEBE3F805, 0xF9ED0D19, 0xFCFF0006, 0x10F40103);
	r1 = D(r1, s0_2_1, 0xFCEF09FB, 0xF6DB0D14, 0x0519FE00, 0xF1F50AE1);
	r2 = D(r2, s0_2_1, 0xE2F10DF6, 0x0506E4D7, 0xC6FAF2FC, 0x120E0AFF);
	r3 = D(r3, s0_2_1, 0x21E2F306, 0x29F6ED11, 0x0C1900E0, 0x01F11105);
	r4 = D(r4, s0_2_1, 0xF11706EE, 0x07FF0FC5, 0xF817F20C, 0xE90CAD25);
	r5 = D(r5, s0_2_1, 0x10E6F181, 0x03E7FC29, 0xEBE40E05, 0x0BBB05FA);
	r6 = D(r6, s0_2_1, 0x03DB0EFC, 0x1200F30C, 0xEE13F516, 0xFEEEF902);
	r7 = D(r7, s0_2_1, 0xF2E82500, 0xE1D009FD, 0xF80A0205, 0x041B03FF);
	r0 = D(r0, s0_2_2, 0xF3FC1001, 0x08F5EB02, 0xFFFF0501, 0xFFFD0900);
	r1 = D(r1, s0_2_2, 0x15FCF4EF, 0x25F000F8, 0x00FD0CFB, 0xFE240800);
	r2 = D(r2, s0_2_2, 0x20D80AE6, 0x05012115, 0xF4FE2CFD, 0xEF0BFB02);
	r3 = D(r3, s0_2_2, 0x01FAFAFD, 0xFB1007D4, 0xD6E51DEF, 0xFC06F403);
	r4 = D(r4, s0_2_2, 0x04FA0806, 0xBC0DFDD3, 0xD7EC0811, 0x07240EFF);
	r5 = D(r5, s0_2_2, 0x0201CFFA, 0x062405F7, 0x1D14F1E6, 0x00F510FD);
	r6 = D(r6, s0_2_2, 0x0C0CA00B, 0x05FE1404, 0x14EFFE00, 0xFDF71201);
	r7 = D(r7, s0_2_2, 0x2104EFEB, 0x030008FF, 0x04FEFD03, 0x03ECF103);
	r0 = D(r0, s1_0_0, 0xD2F90509, 0xED061EF0, 0x05030512, 0xF9F3FDF9);
	r1 = D(r1, s1_0_0, 0x0703EEEC, 0x0017FA0B, 0xFC03DF10, 0x141E0611);
	r2 = D(r2, s1_0_0, 0xF7E2FADC, 0x1CC2EDF4, 0xB0BAE781, 0x0EB901BD);
	r3 = D(r3, s1_0_0, 0xE7DD1181, 0xB6DF0E15, 0xDEFFE181, 0x0F81FBE2);
	r4 = D(r4, s1_0_0, 0xEBE30297, 0xDB0AEE24, 0xDEF0FDD2, 0xD4278181);
	r5 = D(r5, s1_0_0, 0xF2EA05FC, 0x05FB0002, 0x3CF2F4AE, 0x16EB0505);
	r6 = D(r6, s1_0_0, 0xF4421A21, 0xFE220B81, 0xE7811125, 0xFA0407E1);
	r7 = D(r7, s1_0_0, 0x842A07F9, 0x030DF217, 0xEDEBFBAD, 0x2812F9DF);
	r0 = D(r0, s1_0_1, 0xE864040E, 0xD315EC23, 0x06F50104, 0x030E02FF);
	r1 = D(r1, s1_0_1, 0xFDF2F781, 0xD2A21207, 0x04DC09F4, 0xACC70DB2);
	r2 = D(r2, s1_0_1, 0xCB260081, 0xDD1D3A07, 0x2D81BE91, 0x112705D9);
	r3 = D(r3, s1_0_1, 0xE11F0C12, 0x1D07ED1D, 0x04DB4000, 0x140FF318);
	r4 = D(r4, s1_0_1, 0xC6F1E8AD, 0xE0020B3D, 0xE8EAF7A1, 0xCEF82E1C);
	r5 = D(r5, s1_0_1, 0xDF34FD14, 0x030203F4, 0xADF113B5, 0x241C0AF6);
	r6 = D(r6, s1_0_1, 0xD081D539, 0xE61E0ACE, 0xD138D8F5, 0x06FD03F9);
	r7 = D(r7, s1_0_1, 0xFFD92C03, 0xC1F600FC, 0x101AF5F5, 0xF4D3050A);
	r0 = D(r0, s1_0_2, 0xF30624EB, 0x072C090B, 0xF9F4FF0A, 0xF90C0804);
	r1 = D(r1, s1_0_2, 0x142CFEEC, 0x31FA25CB, 0x1DBCF8DB, 0xECEA0AEB);
	r2 = D(r2, s1_0_2, 0x10E6EEFF, 0xDE2FA0F2, 0xFBE038BB, 0x010DF61C);
	r3 = D(r3, s1_0_2, 0xE1FE1503, 0x06171417, 0xF609E91F, 0x06FA1301);
	r4 = D(r4, s1_0_2, 0xFB34C105, 0x23F62128, 0x1008FDEF, 0xE8F4FBEA);
	r5 = D(r5, s1_0_2, 0x08ECFA81, 0xF6F70106, 0x1519BCF9, 0x06F01204);
	r6 = D(r6, s1_0_2, 0xF0540B04, 0xFC13F703, 0x229B02F1, 0xFFFF03FA);
	r7 = D(r7, s1_0_2, 0x2C07070B, 0x0D22F9F6, 0x06F7F1FA, 0xE20EF80C);
	r0 = D(r0, s1_1_0, 0x0A45E6DA, 0xECCABEDD, 0x0608020B, 0x05F705ED);
	r1 = D(r1, s1_1_0, 0xFA000EF6, 0x4423FCF1, 0xF8DEFEF2, 0x030FFA12);
	r2 = D(r2, s1_1_0, 0x0024FAEE, 0x2B2FCBE9, 0xBD32F90E, 0xEAF50FFF);
	r3 = D(r3, s1_1_0, 0x0CE2ECFA, 0x21E12137, 0x4C810E13, 0x0981F4EB);
	r4 = D(r4, s1_1_0, 0x0E8116E9, 0xF30306DD, 0x20EBF044, 0x3B81EC81);
	r5 = D(r5, s1_1_0, 0xF8020F1A, 0x02FE0101, 0x3E3FF6CC, 0x02E6F008);
	r6 = D(r6, s1_1_0, 0xE5B3EFF3, 0xEA8D0F06, 0xEC18FFEF, 0x0A81FEFD);
	r7 = D(r7, s1_1_0, 0xD69710FE, 0xFA00F2FC, 0xEB060409, 0xF4FEF004);
	r0 = D(r0, s1_1_1, 0x11F102F6, 0xF2E47FDF, 0x0CCC07FD, 0xF5C519FC);
	r1 = D(r1, s1_1_1, 0xF681130F, 0x2AF7F51E, 0xF84CEA33, 0xFA3BF00E);
	r2 = D(r2, s1_1_1, 0x1326100D, 0x7F100AE5, 0xDD95D82B, 0x0D0B110B);
	r3 = D(r3, s1_1_1, 0x1B715FF6, 0xEA5018FB, 0xE400C52F, 0xED0B02F6);
	r4 = D(r4, s1_1_1, 0xE281D504, 0xE73B42E6, 0xF5279459, 0xB2152D12);
	r5 = D(r5, s1_1_1, 0x27D81AE1, 0xFFF8FE39, 0xF916CDF2, 0x01810E09);
	r6 = D(r6, s1_1_1, 0x0936CAF8, 0x1AD481F4, 0xE8DCC6E5, 0x0EDEF40A);
	r7 = D(r7, s1_1_1, 0x131BCC06, 0xF14FECF1, 0xFD0E2F02, 0xF681E9FA);
	r0 = D(r0, s1_1_2, 0xEF0E1C05, 0x05FAF001, 0x01FEED02, 0xFD09FE03);
	r1 = D(r1, s1_1_2, 0x00E9DF03, 0x11D505F5, 0x07D1F6F8, 0xF00E52FC);
	r2 = D(r2, s1_1_2, 0x007FBF02, 0x1CBB12DA, 0xE7058101, 0x131672FF);
	r3 = D(r3, s1_1_2, 0xF90827ED, 0x1612121B, 0x19119BE6, 0x030CF3F9);
	r4 = D(r4, s1_1_2, 0xF8FFAA0A, 0x2EDC3B08, 0x0981AA06, 0xE91C1405);
	r5 = D(r5, s1_1_2, 0x16811E81, 0xFDFF100B, 0xF6DA6110, 0x1504CEF9);
	r6 = D(r6, s1_1_2, 0x22FD06EB, 0x000BE100, 0xF219340D, 0xFEFBFB01);
	r7 = D(r7, s1_1_2, 0x16FEE1F7, 0x0424EDFB, 0x06020801, 0x00E646FF);
	r0 = D(r0, s1_2_0, 0xF3BC01F6, 0x0BC2C200, 0xFF0EFE01, 0x0503F707);
	r1 = D(r1, s1_2_0, 0x0C0BF300, 0xFFEF08FC, 0xFB100FFC, 0x0413DE06);
	r2 = D(r2, s1_2_0, 0x02E50E04, 0xF9FA0E01, 0x113BCCFD, 0x0E0EF3F8);
	r3 = D(r3, s1_2_0, 0xF18107FC, 0x213ADFDC, 0xCCF040FE, 0x140E1AFC);
	r4 = D(r4, s1_2_0, 0xF9C91A04, 0xE801F4ED, 0x0719E31D, 0x7F81D7A6);
	r5 = D(r5, s1_2_0, 0x14F1D405, 0xFEFF0500, 0x7117F7E9, 0xFD0B1200);
	r6 = D(r6, s1_2_0, 0x11E20816, 0x01C21C02, 0xF2DF0400, 0xFCFEFC04);
	r7 = D(r7, s1_2_0, 0xFFF4DFF3, 0x090200F8, 0x04FD0401, 0xE527000B);
	r0 = D(r0, s1_2_1, 0x09FF05F8, 0xF3DCF8F8, 0x03030100, 0x0411EE01);
	r1 = D(r1, s1_2_1, 0x0AD4E3F9, 0xFE322F01, 0xF8EAE00B, 0x0A121E04);
	r2 = D(r2, s1_2_1, 0x1B58E202, 0x16031506, 0x24A612F4, 0xEED00B01);
	r3 = D(r3, s1_2_1, 0x0E1056EF, 0x21DDF6EB, 0x293FE4DE, 0x062505FD);
	r4 = D(r4, s1_2_1, 0x10241A06, 0x0729B7D1, 0x1833FF11, 0xE7D2CE18);
	r5 = D(r5, s1_2_1, 0xFF17EAF1, 0x07F4FBF2, 0x1329FDF8, 0xEC0BE801);
	r6 = D(r6, s1_2_1, 0xFE3D7215, 0xFC2B13FB, 0x06023CFC, 0xF4E6D603);
	r7 = D(r7, s1_2_1, 0xF4133414, 0xFA10EC06, 0x01EF01FE, 0x01F0130B);
	r0 = D(r0, s1_2_2, 0x00FDFAF2, 0xFDD1F605, 0x00FCF001, 0x05001003);
	r1 = D(r1, s1_2_2, 0x0B02F6FD, 0x0704F7F6, 0x07EB1DFB, 0x0AC7EF08);
	r2 = D(r2, s1_2_2, 0x18032BF2, 0xFF06BEEE, 0xFC960407, 0xFD24FA05);
	r3 = D(r3, s1_2_2, 0x11B903FB, 0xF1CA2B05, 0x48F26BFA, 0xFFFE0403);
	r4 = D(r4, s1_2_2, 0x0D1ACB03, 0xFFF381E5, 0x0F1F3CFD, 0x01D90707);
	r5 = D(r5, s1_2_2, 0x23B10BFC, 0x0823CB00, 0x210107F8, 0x05060EFF);
	r6 = D(r6, s1_2_2, 0x2C1201FB, 0x0203F604, 0x06E5C3FD, 0x0200E002);
	r7 = D(r7, s1_2_2, 0x02FFFA02, 0x0502F5FE, 0x0004F900, 0xF7FA0601);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_4x32_SOFT_vk] -conv2
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv1
//!BIND LUMA
//!SAVE conv2
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv1_pt;
			r = conv1_gather(p, 0);
			g = conv1_gather(p, 1);
			b = conv1_gather(p, 2);
			a = conv1_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w);
			vec4 v1 = vec4(r.z, g.z, b.z, a.z);
			vec4 v2 = vec4(r.x, g.x, b.x, a.x);
			vec4 v3 = vec4(r.y, g.y, b.y, a.y);
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv1_pt;
			r = conv1_gather(p, 0);
			g = conv1_gather(p, 1);
			b = conv1_gather(p, 2);
			a = conv1_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w);
			vec4 v5 = vec4(r.z, g.z, b.z, a.z);
			vec4 v6 = vec4(r.x, g.x, b.x, a.x);
			vec4 v7 = vec4(r.y, g.y, b.y, a.y);
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFFEF03F4, 0xDFFAFA32, 0xF711FDFE, 0xFC0A0FEE);
	r1 = D(r1, s0_0_0, 0xF0140606, 0xFB0403FF, 0xF901FEEA, 0xE906F0F4);
	r2 = D(r2, s0_0_0, 0xF7FB0B08, 0xEDF8FD11, 0xE9F81AF7, 0x06060AF6);
	r3 = D(r3, s0_0_0, 0xF10AF300, 0xF4FCFDFD, 0x04FCFF00, 0x0200FDFF);
	r4 = D(r4, s0_0_0, 0xF4F8FC08, 0x09030508, 0xF6FFF806, 0x01000200);
	r5 = D(r5, s0_0_0, 0xFBFD05E9, 0x07F6120D, 0x03F61F03, 0xF2F50620);
	r6 = D(r6, s0_0_0, 0x351B0604, 0xF5F90801, 0x040101FE, 0x170E0DFC);
	r7 = D(r7, s0_0_0, 0x0E041D05, 0x06F607FD, 0x0B050C02, 0x21F500FD);
	r0 = D(r0, s0_0_1, 0x230B0FED, 0x08170320, 0x130B0509, 0x1C110EF7);
	r1 = D(r1, s0_0_1, 0xFF0515F6, 0x0F0200FD, 0x0915EC18, 0xFF1A12F9);
	r2 = D(r2, s0_0_1, 0x21020204, 0x2BF9F902, 0x13E305E6, 0xE9FAE203);
	r3 = D(r3, s0_0_1, 0x34F7FA0C, 0xCDDB000B, 0xFD01FE01, 0xE9030B00);
	r4 = D(r4, s0_0_1, 0xD2EA0403, 0x1C07FE00, 0xDA101601, 0xF30501FF);
	r5 = D(r5, s0_0_1, 0xE5F0F608, 0xB6F8F30F, 0xA3BCD7DC, 0xD5F1E506);
	r6 = D(r6, s0_0_1, 0xFD2307F3, 0xFBE30004, 0xFDFE0001, 0xE9F30EFB);
	r7 = D(r7, s0_0_1, 0xF8040906, 0x03FC06F5, 0xB0F3E903, 0xFA1509FD);
	r0 = D(r0, s0_0_2, 0x01F408FF, 0xD4F0F9CE, 0x07030A03, 0xF10303FC);
	r1 = D(r1, s0_0_2, 0x06F7FCFB, 0xFD00FE00, 0xFE0CF904, 0xF5F80103);
	r2 = D(r2, s0_0_2, 0xFB09FBFC, 0xFA040002, 0x051DF6F6, 0xFE0FFE02);
	r3 = D(r3, s0_0_2, 0x030DFE04, 0x35040500, 0x010101FF, 0x12F702FF);
	r4 = D(r4, s0_0_2, 0x06F200F9, 0x0DF5FB0C, 0xFBFEFC02, 0x0000FD03);
	r5 = D(r5, s0_0_2, 0xF00C020F, 0x0E0F1006, 0x00040111, 0x06011A11);
	r6 = D(r6, s0_0_2, 0x03F417FF, 0x020BFC07, 0x01010101, 0x1EFFFC00);
	r7 = D(r7, s0_0_2, 0x0FF9FFFE, 0xDD0009FA, 0x2311F917, 0xFEFFFA00);
	r0 = D(r0, s0_1_0, 0xF701F4EE, 0x2AECF0F4, 0x3328F4EB, 0xF9FBFEEF);
	r1 = D(r1, s0_1_0, 0xF9E7071C, 0x1C3503FA, 0xF204FDD0, 0x0A02F7E5);
	r2 = D(r2, s0_1_0, 0xEB0707FA, 0x192011F4, 0x062B12C5, 0x0BE2F10A);
	r3 = D(r3, s0_1_0, 0x031C0300, 0xFBFC0CFA, 0xF8DF0108, 0xF8040602);
	r4 = D(r4, s0_1_0, 0xE2F11004, 0xFD1408F4, 0xFEDCF4F8, 0x00FF0003);
	r5 = D(r5, s0_1_0, 0xE4E3FD18, 0x21050B0B, 0x03F11800, 0x0AD2ED12);
	r6 = D(r6, s0_1_0, 0xCCE10627, 0xECF5FF07, 0xFB0801FE, 0xE61728DE);
	r7 = D(r7, s0_1_0, 0xE9DD1109, 0xF6E308FD, 0xFAFA0CF8, 0x18D31409);
	r0 = D(r0, s0_1_1, 0xC5E91BF1, 0xEFCE29A7, 0xF3D214F6, 0xC2E50E07);
	r1 = D(r1, s0_1_1, 0x1DF4FA0C, 0xE8E4F7FF, 0xF7DF22DE, 0x02C906F7);
	r2 = D(r2, s0_1_1, 0xC6E005FC, 0xF8B30CE5, 0xF307F909, 0xF42D0F0D);
	r3 = D(r3, s0_1_1, 0x0ADEEDEE, 0x2D102013, 0x051CF902, 0x0A03021E);
	r4 = D(r4, s0_1_1, 0x46F6F908, 0x2522F205, 0xF717F7EE, 0x691410F7);
	r5 = D(r5, s0_1_1, 0x15FAE003, 0x1C13FDF1, 0xF313DE25, 0xFC0C02F9);
	r6 = D(r6, s0_1_1, 0x14F00FE6, 0xEFFCE802, 0xEAE3F805, 0xA2EEE0F1);
	r7 = D(r7, s0_1_1, 0x0406F60B, 0x0FE8E80F, 0x0A1EFCF4, 0x082B0803);
	r0 = D(r0, s0_1_2, 0x35F102DF, 0xD7001C1C, 0x0F07FF0A, 0x101D1CEE);
	r1 = D(r1, s0_1_2, 0xFAEC0D06, 0xFE04FDFF, 0xD411E7E1, 0xFFFA0900);
	r2 = D(r2, s0_1_2, 0xF4F8F6F0, 0x0507FD09, 0xF2FAE2E1, 0xE0F9FB09);
	r3 = D(r3, s0_1_2, 0xF0F7E8EB, 0x0FBECEDE, 0x01FE0200, 0x0E120907);
	r4 = D(r4, s0_1_2, 0x170D0AFE, 0x011002FF, 0x021503FC, 0xF80603FD);
	r5 = D(r5, s0_1_2, 0xD9FFF5EB, 0xFDFEF1FA, 0x14042BEC, 0x1114E2DF);
	r6 = D(r6, s0_1_2, 0xF7071610, 0xF300F907, 0xFD07FF00, 0x23FB09F5);
	r7 = D(r7, s0_1_2, 0x0EF80FFB, 0x0A05F90D, 0xFA0D03D1, 0x06FE1D06);
	r0 = D(r0, s0_2_0, 0xF50FF8E2, 0x0CF8E0CF, 0xFBECFEEC, 0x0C2000F2);
	r1 = D(r1, s0_2_0, 0x03F8FFFF, 0x0109FF00, 0x1415FBF7, 0xE8E0F9FD);
	r2 = D(r2, s0_2_0, 0x03FE0600, 0x04FE0BF9, 0xDAF0F50D, 0xEDD6F100);
	r3 = D(r3, s0_2_0, 0x01030007, 0xEB1311F0, 0xFDFEFFFF, 0x001111FB);
	r4 = D(r4, s0_2_0, 0x07FD0302, 0xFB13FF05, 0xFC07F9FC, 0x09040003);
	r5 = D(r5, s0_2_0, 0x2714E90C, 0x0B25F5F8, 0xEDDDF1D6, 0x020EEBFA);
	r6 = D(r6, s0_2_0, 0x03FBDFE5, 0xFF06F509, 0x03FC03FE, 0x0FF702F5);
	r7 = D(r7, s0_2_0, 0x0009FA15, 0xF8020008, 0x0001F6EB, 0x08F5FE01);
	r0 = D(r0, s0_2_1, 0xF5AD1AF3, 0xEEE7010A, 0xED15101D, 0xFF16EAF4);
	r1 = D(r1, s0_2_1, 0x07DFF801, 0x00090203, 0x06F90006, 0x092001FD);
	r2 = D(r2, s0_2_1, 0x07020D13, 0xFF18ECFA, 0x0700FE04, 0xF1E61216);
	r3 = D(r3, s0_2_1, 0xFAF6FEF7, 0x080501E5, 0x06FFFA01, 0xEBC71DC5);
	r4 = D(r4, s0_2_1, 0xEED016EC, 0xF812FFF9, 0xF704F906, 0x05BA1105);
	r5 = D(r5, s0_2_1, 0xD5FB1AFA, 0xC1B74EDF, 0xEF052409, 0x14DCF1EF);
	r6 = D(r6, s0_2_1, 0xC6C50CD8, 0x1F15F600, 0xF36BFC07, 0xFF140EEB);
	r7 = D(r7, s0_2_1, 0xFE0AFEFD, 0x03F0F9FF, 0xFCF106FB, 0xF5FA11FB);
	r0 = D(r0, s0_2_2, 0xFB0024E2, 0x250AF1F2, 0x04140B09, 0x040B0DFF);
	r1 = D(r1, s0_2_2, 0x05F30E0A, 0xFF02FD00, 0xF00CE8FA, 0x0712EEF2);
	r2 = D(r2, s0_2_2, 0x11F41408, 0x00FFE9FC, 0xFC2701E5, 0xE511E8F2);
	r3 = D(r3, s0_2_2, 0xF803FDFE, 0x12FBE8E4, 0xFF01FA03, 0xEEED0AF7);
	r4 = D(r4, s0_2_2, 0xFF0BF7E3, 0x0302FE10, 0x11FAE6F7, 0xFB060F06);
	r5 = D(r5, s0_2_2, 0xFC09F63F, 0x0BFC3C08, 0x0318B1DE, 0xF4E7EBF6);
	r6 = D(r6, s0_2_2, 0xF209C0CC, 0x0FFFF8F3, 0x0708FB01, 0xF4F100F0);
	r7 = D(r7, s0_2_2, 0x06F61404, 0xFCFF050B, 0xF807F0FC, 0xFEFD02F8);
	r0 = D(r0, s1_0_0, 0x01F408FB, 0xF96A1F10, 0x14151510, 0x00DBFEF6);
	r1 = D(r1, s1_0_0, 0x11FEE006, 0xFEFFF3FF, 0xF2040208, 0x07040CF0);
	r2 = D(r2, s1_0_0, 0xF9FFF505, 0xFD0328FF, 0xE60D85FC, 0x180DBE0F);
	r3 = D(r3, s1_0_0, 0xFE0603FD, 0xEF2AFFFC, 0xF6020803, 0xF0020018);
	r4 = D(r4, s1_0_0, 0xF2100FF6, 0x0BF5F7FE, 0x0B13F90B, 0x04FFFDFD);
	r5 = D(r5, s1_0_0, 0x06F316F5, 0x1512FB06, 0x1F09EBFF, 0xF51BD70B);
	r6 = D(r6, s1_0_0, 0x00E2F61C, 0xF81006F7, 0x03FFFFFF, 0xE8F1D31A);
	r7 = D(r7, s1_0_0, 0xF5E1E5EF, 0x0DEB0F0F, 0xE802E1F4, 0x20EA04EA);
	r0 = D(r0, s1_0_1, 0xEE03010D, 0xF52EEF18, 0x0CD7F015, 0x06C421F4);
	r1 = D(r1, s1_0_1, 0x1504ED01, 0x00F70401, 0x22F6CFFC, 0xFEE7DDF4);
	r2 = D(r2, s1_0_1, 0xE9FD0BFE, 0x04E30716, 0xF6E3C4FF, 0x1403EFEE);
	r3 = D(r3, s1_0_1, 0x0BF5EA02, 0xDD201FEA, 0x0404F801, 0xF6FA0801);
	r4 = D(r4, s1_0_1, 0xD9250DF6, 0x07FBFA03, 0xFFF8DF0F, 0x03FDFD02);
	r5 = D(r5, s1_0_1, 0xE82B49B4, 0xE2FAE4FA, 0xE8FF3781, 0xD5F703CB);
	r6 = D(r6, s1_0_1, 0x15EDE01C, 0xF51D00FD, 0x03FEFDFD, 0x0E01F9C7);
	r7 = D(r7, s1_0_1, 0x0AFDEF00, 0x098C3B0D, 0xF927FA07, 0x0C0C0406);
	r0 = D(r0, s1_0_2, 0xFA2402F0, 0xFB000BF5, 0x09EDEE02, 0x02ECF200);
	r1 = D(r1, s1_0_2, 0xE11C04F3, 0x04FDFF02, 0x09F2F209, 0x05FDE1F2);
	r2 = D(r2, s1_0_2, 0xF9FE0902, 0x06FB040F, 0xF820D419, 0xF604EBE9);
	r3 = D(r3, s1_0_2, 0x040B06FD, 0x0C0CECFA, 0xFC020101, 0xE4F7FF01);
	r4 = D(r4, s1_0_2, 0xF40112FB, 0x08FEE7EF, 0x09F80C11, 0x00FCFEFC);
	r5 = D(r5, s1_0_2, 0x1911E70F, 0x07FD0112, 0xFB0903FD, 0x29048917);
	r6 = D(r6, s1_0_2, 0xE809FFF1, 0xF7FDFF02, 0x02010001, 0x0A00F203);
	r7 = D(r7, s1_0_2, 0xFEF2F705, 0x0AFCFFFA, 0x1A0AE113, 0xFE05F801);
	r0 = D(r0, s1_1_0, 0x152EC10D, 0xC607FD15, 0xBDF70713, 0x1606FF03);
	r1 = D(r1, s1_1_0, 0x0D1711EC, 0xEEF80402, 0xE604D100, 0xE9F528FB);
	r2 = D(r2, s1_1_0, 0xFCF2FFF6, 0x16F71710, 0xD8E8C1F7, 0xFD399FFA);
	r3 = D(r3, s1_1_0, 0xF6FE0205, 0x1B1B08ED, 0x1913FD00, 0x040D0AFA);
	r4 = D(r4, s1_1_0, 0x0E01E9E1, 0xFEEBFB08, 0x05E3170F, 0x02030701);
	r5 = D(r5, s1_1_0, 0x112FD8EB, 0xFAEDC900, 0xF842061B, 0x26FFD3C6);
	r6 = D(r6, s1_1_0, 0xF82BF4B8, 0x11FEF001, 0x0403ED01, 0xE3ED3AFA);
	r7 = D(r7, s1_1_0, 0x16E2D2E7, 0xFBED1400, 0x19F9F211, 0x37FAD006);
	r0 = D(r0, s1_1_1, 0x07020DFD, 0x29133282, 0xCF0D0DB7, 0x0A33E714);
	r1 = D(r1, s1_1_1, 0x17061C19, 0xF3020109, 0xBE17F628, 0xFBDDFEBC);
	r2 = D(r2, s1_1_1, 0x2421F4E4, 0xFFF5F4AB, 0xB702B5EC, 0xF002FDF1);
	r3 = D(r3, s1_1_1, 0xF31800C7, 0x81DEF39E, 0x09EF05FC, 0x151EE2E1);
	r4 = D(r4, s1_1_1, 0xF8EB00A8, 0x0800DD12, 0xE2F6D760, 0x01E1F708);
	r5 = D(r5, s1_1_1, 0xFFD91336, 0x0CE5FBFF, 0x12C2BFEF, 0x04E5F702);
	r6 = D(r6, s1_1_1, 0xEACFE715, 0xFCCEFAE1, 0xFFFB10FC, 0x06D10CC4);
	r7 = D(r7, s1_1_1, 0x22FDE6F8, 0x14240C15, 0x38060820, 0x041EF50F);
	r0 = D(r0, s1_1_2, 0xFE0B0A03, 0xFB1EE62B, 0x12ECF1E7, 0xFF19F7FF);
	r1 = D(r1, s1_1_2, 0xE92331EB, 0x0005FF04, 0x0F11FD0D, 0x10EFD511);
	r2 = D(r2, s1_1_2, 0x0B00F6FA, 0x13F6190A, 0xFD05D2ED, 0xF3FCDCF5);
	r3 = D(r3, s1_1_2, 0xFD09FE08, 0xD9170CA8, 0x00FF0400, 0x0BDC0804);
	r4 = D(r4, s1_1_2, 0x0DF8E9FF, 0xF0EAFCF9, 0x31FBCF3E, 0x04FCFDFF);
	r5 = D(r5, s1_1_2, 0xD10A26CA, 0x0BFFF807, 0xD2DED801, 0x23239F12);
	r6 = D(r6, s1_1_2, 0x45071623, 0x03EDDC13, 0x0505FA03, 0x06FE0F00);
	r7 = D(r7, s1_1_2, 0xEEE7FAEE, 0xF5E10D0C, 0xF9002808, 0xFAFB02F8);
	r0 = D(r0, s1_2_0, 0x100BFB18, 0x340139DD, 0x0009FEF3, 0xED0207FE);
	r1 = D(r1, s1_2_0, 0x1A0BFEFE, 0xF9F6FEFE, 0xECF7E80A, 0x0E05FD04);
	r2 = D(r2, s1_2_0, 0xF6F908FB, 0xFFFC1111, 0xEC07DED4, 0xF70DB5C8);
	r3 = D(r3, s1_2_0, 0x04030702, 0x1619E8F9, 0xFB010107, 0xE5F43809);
	r4 = D(r4, s1_2_0, 0xFB0EF2F8, 0x0100F9FB, 0x05F5F600, 0x020204FF);
	r5 = D(r5, s1_2_0, 0xF6032B1D, 0x0CD54BF5, 0x0216D8F2, 0x0C0CE004);
	r6 = D(r6, s1_2_0, 0x1A0126F7, 0xF90AF307, 0xFE01FD01, 0x11F704FA);
	r7 = D(r7, s1_2_0, 0x05FFEEFC, 0x05030708, 0x000210F5, 0x1F14F7F9);
	r0 = D(r0, s1_2_1, 0xF1FF0910, 0xEE240827, 0xDCF4F5EF, 0x0101FFFF);
	r1 = D(r1, s1_2_1, 0x1FF504F1, 0xF8FEFCFE, 0xF301ED0A, 0x09080B11);
	r2 = D(r2, s1_2_1, 0xF0F9080B, 0xFE0B1306, 0xE702EA0F, 0xE2E4B7DD);
	r3 = D(r3, s1_2_1, 0x0001FFFB, 0xFDE2FAD5, 0x06010007, 0xF7FFF6DC);
	r4 = D(r4, s1_2_1, 0xFD00F9BE, 0x0807FCFF, 0xFB0F1117, 0xF5F5EDFA);
	r5 = D(r5, s1_2_1, 0x12DCF09C, 0xF6E781B0, 0x18EDFE0A, 0x13FFF70B);
	r6 = D(r6, s1_2_1, 0x04170894, 0x0D11151A, 0xFC040805, 0xFFE60825);
	r7 = D(r7, s1_2_1, 0x0806F701, 0x11F3FB03, 0xF500FA04, 0x07F5ED05);
	r0 = D(r0, s1_2_2, 0xFC09EBEC, 0x1208F009, 0xF70FDA0A, 0xF701F200);
	r1 = D(r1, s1_2_2, 0xF50906F6, 0x0500FE01, 0x070A0809, 0x130A080D);
	r2 = D(r2, s1_2_2, 0xF6FDF500, 0xFF011805, 0x150ADB1C, 0x09F8CC07);
	r3 = D(r3, s1_2_2, 0xF8040207, 0xDFFB21CC, 0xFE000203, 0xF8FCF3EE);
	r4 = D(r4, s1_2_2, 0x01040FEC, 0xFE04FEF8, 0x00FA0302, 0x01FFF7FB);
	r5 = D(r5, s1_2_2, 0x2514ED11, 0xFBF4CCE9, 0x05E92C0C, 0xE204FAFF);
	r6 = D(r6, s1_2_2, 0xF9F800F8, 0xE5F918F6, 0xFCFFFAFB, 0xF7ED29E6);
	r7 = D(r7, s1_2_2, 0xF5FFF500, 0xFFFDFB01, 0xF6FFFF11, 0xFD03F2F7);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xF2FD0B18, 0x1F1A2D1A, 0xFC0609F6, 0x1502010C);
	r1 = D(r1, s0_0_0, 0xF10807ED, 0x0103FEFF, 0x10030E1C, 0xF909AEF7);
	r2 = D(r2, s0_0_0, 0xF7F4FC07, 0x090307FA, 0x18FA11F7, 0x0906170A);
	r3 = D(r3, s0_0_0, 0x0D090DF6, 0x0300DB06, 0x06020601, 0xF4FBF2FB);
	r4 = D(r4, s0_0_0, 0x07FAF50E, 0xFF050AE9, 0x090E09EC, 0x00FFFF06);
	r5 = D(r5, s0_0_0, 0x03081E24, 0x0712F1FC, 0xF42D1CFC, 0xD6F5C7DE);
	r6 = D(r6, s0_0_0, 0xF2EE0BD9, 0xFD090904, 0x0201FFFE, 0xFAEBE0FF);
	r7 = D(r7, s0_0_0, 0xFDFB01E1, 0x06010F19, 0x0BFEF7EC, 0xFBFB05EF);
	r0 = D(r0, s0_0_1, 0x02FAF1F7, 0x042802F4, 0x05FF03EE, 0x04ED0008);
	r1 = D(r1, s0_0_1, 0xFEFFF006, 0x0405FE01, 0xFBFE1507, 0xEC0EF206);
	r2 = D(r2, s0_0_1, 0xFBF303FF, 0xEF00FDEE, 0x050308EB, 0xFDFBF708);
	r3 = D(r3, s0_0_1, 0xF8050101, 0x0A1DF205, 0xFC03FEFC, 0xFFF6FB07);
	r4 = D(r4, s0_0_1, 0x0CFEF204, 0x030810E4, 0x0807FA03, 0x030105FF);
	r5 = D(r5, s0_0_1, 0x26E8FCFB, 0x0C06FD06, 0x0938DF15, 0x2EE0F4DD);
	r6 = D(r6, s0_0_1, 0xEDDF12E8, 0xFBF8EA0A, 0x010203FF, 0x1FFBFDFF);
	r7 = D(r7, s0_0_1, 0x0BF41100, 0xF9FB0906, 0x17CEF7F8, 0x0CFB01E8);
	r0 = D(r0, s0_0_2, 0xFB1513FE, 0xF70EFF11, 0x05F602FE, 0x030A0606);
	r1 = D(r1, s0_0_2, 0x10070102, 0xFF0100FF, 0x071010F2, 0xF9F9C204);
	r2 = D(r2, s0_0_2, 0x01000300, 0xF2F1FF01, 0x25022ADC, 0x10FA02FA);
	r3 = D(r3, s0_0_2, 0x08FEFE05, 0x1514DCFF, 0x01020001, 0x0AE501FB);
	r4 = D(r4, s0_0_2, 0x0E09F5F9, 0xFE0112FA, 0x0607F602, 0x03000203);
	r5 = D(r5, s0_0_2, 0xFCF6FF02, 0xF2FB08F9, 0x09E8E501, 0xDBC60D06);
	r6 = D(r6, s0_0_2, 0xFD1A0A0E, 0x04FA08FE, 0x01010202, 0xF9FC1104);
	r7 = D(r7, s0_0_2, 0xFCE600FB, 0x09FB0202, 0xF40C120D, 0x070603FF);
	r0 = D(r0, s0_1_0, 0xE20A1331, 0x78ECBB03, 0xE808DF09, 0xEE1CF535);
	r1 = D(r1, s0_1_0, 0x02EEEFF1, 0xFA0EFC0E, 0xFA163C1F, 0xEB0AE0E8);
	r2 = D(r2, s0_1_0, 0xF6F5FDFE, 0xF6F58D0A, 0x000943DF, 0xFAEE26FD);
	r3 = D(r3, s0_1_0, 0x03F11309, 0xECF8EFEF, 0x16FBFBEF, 0x06E5F1E9);
	r4 = D(r4, s0_1_0, 0x0AEDF9D7, 0x0B0D0DF0, 0xF418F328, 0xFD010102);
	r5 = D(r5, s0_1_0, 0xFF0019FF, 0x0CF8E8EF, 0xC4D0DCDC, 0xF30403F6);
	r6 = D(r6, s0_1_0, 0x13F435E9, 0xF80103ED, 0x0403FEFF, 0xFCF914FA);
	r7 = D(r7, s0_1_0, 0x05F9E313, 0x0B0BFE6E, 0xE0EF12D7, 0xF5FAD5FA);
	r0 = D(r0, s0_1_1, 0xE913EA03, 0xAEAB1501, 0x2412DBF9, 0xF50FFEF7);
	r1 = D(r1, s0_1_1, 0xC8EAFB0A, 0x090BFE00, 0x230EEFF4, 0x1BFD01FF);
	r2 = D(r2, s0_1_1, 0x0AFAFE07, 0xFE050AFF, 0x1BF10102, 0x04FB20EA);
	r3 = D(r3, s0_1_1, 0xF9F9FA0E, 0xFFC3940E, 0xEFFA0306, 0xFDF5F30D);
	r4 = D(r4, s0_1_1, 0xF4F32804, 0x1706EBFC, 0xF713FBE1, 0xFF00FAFE);
	r5 = D(r5, s0_1_1, 0xEB14401E, 0x06AF1C14, 0xE7C5FFD7, 0xFAFB0611);
	r6 = D(r6, s0_1_1, 0x0BFFE7F2, 0x01E92103, 0x0805FD04, 0xFEF6D001);
	r7 = D(r7, s0_1_1, 0xE501EF0B, 0xD8F6060E, 0x05EA1618, 0x2E020B02);
	r0 = D(r0, s0_1_2, 0x04101301, 0xAAE13ED5, 0xF9FAD001, 0x032C0112);
	r1 = D(r1, s0_1_2, 0x070A0605, 0x02040101, 0xFCF80A10, 0xF7E9E107);
	r2 = D(r2, s0_1_2, 0xFE05EFFF, 0xF403F713, 0xF4F01A01, 0x1311FDFE);
	r3 = D(r3, s0_1_2, 0x09FDF606, 0x1220BDF7, 0xF9000002, 0x00EBFE05);
	r4 = D(r4, s0_1_2, 0xFEED2604, 0x18070D08, 0xF8E11702, 0x0407FCFE);
	r5 = D(r5, s0_1_2, 0x25232002, 0x0404F6FB, 0xFAEBBC10, 0xD307FD0A);
	r6 = D(r6, s0_1_2, 0xE8DED617, 0xF6EA14FD, 0x0004FF02, 0x0EFFFEFE);
	r7 = D(r7, s0_1_2, 0x05F7EBFE, 0x0C0EF2FE, 0xEBE0300A, 0xFC04EE03);
	r0 = D(r0, s0_2_0, 0x0306DB11, 0xC6F825EC, 0xF8022107, 0x1F02F704);
	r1 = D(r1, s0_2_0, 0xF0F108F4, 0xFE04FF02, 0x20151A1B, 0xF3F216EE);
	r2 = D(r2, s0_2_0, 0x0D0A0208, 0xFFFB03FE, 0xF3F538F5, 0x21F72AF5);
	r3 = D(r3, s0_2_0, 0xFA0000FD, 0xDF1014EE, 0xF204FAFC, 0x3115310B);
	r4 = D(r4, s0_2_0, 0x08F210ED, 0x02F601FE, 0xEB0C0E0A, 0x0907FD03);
	r5 = D(r5, s0_2_0, 0x1816F206, 0xFD09EEB5, 0xEC01DE08, 0xFAF309F7);
	r6 = D(r6, s0_2_0, 0x21F602F3, 0xF9EB08D9, 0xFD05FCFD, 0xCA0DF4FC);
	r7 = D(r7, s0_2_0, 0x1FF4D0F3, 0x0CFB050D, 0x0905FAFC, 0x26FA0EF3);
	r0 = D(r0, s0_2_1, 0x0F350B31, 0xFCF416F6, 0x140E1602, 0x0CF6FB19);
	r1 = D(r1, s0_2_1, 0xDDF511F3, 0xFC060400, 0xFCF200FD, 0xED06F713);
	r2 = D(r2, s0_2_1, 0xF30EF510, 0xF5FD1AFA, 0xF9FE1E02, 0x10FA0010);
	r3 = D(r3, s0_2_1, 0xF3000503, 0xBA00F11B, 0x0AFCFEFC, 0xD0021804);
	r4 = D(r4, s0_2_1, 0xE3F1F20D, 0x1009F2F4, 0x1501E202, 0xCF16FBFD);
	r5 = D(r5, s0_2_1, 0xFBEA14DA, 0xC331FBF1, 0xF4F9F1EC, 0x0AE1F502);
	r6 = D(r6, s0_2_1, 0xE31C121E, 0x09EFF1F5, 0x10FDF700, 0xF1F6FB14);
	r7 = D(r7, s0_2_1, 0x0EFDFD10, 0x00EA0C12, 0xF7F603EF, 0xE3FE05EE);
	r0 = D(r0, s0_2_2, 0x0A0CF8FF, 0x18F71C1B, 0x0EFB23FF, 0xF3130AFF);
	r1 = D(r1, s0_2_2, 0x0509F301, 0xFF000200, 0x130C0A01, 0x0DF6EF09);
	r2 = D(r2, s0_2_2, 0x040AF2FC, 0xF9F810FA, 0x2CFF22F4, 0x15FAFC01);
	r3 = D(r3, s0_2_2, 0x0706FCFD, 0x0E14DFFE, 0xFF02FFFE, 0xF500ED07);
	r4 = D(r4, s0_2_2, 0xD3E3FE09, 0xF303F0FC, 0x04F51706, 0x01040301);
	r5 = D(r5, s0_2_2, 0xF2092B0E, 0x070709FB, 0x29DB0707, 0xED2A04FC);
	r6 = D(r6, s0_2_2, 0xFAE0EF0A, 0xF40320FD, 0x0103FF02, 0xF7F6D0FD);
	r7 = D(r7, s0_2_2, 0x09F4ED02, 0x0709F7F9, 0x08020300, 0xFA0701FA);
	r0 = D(r0, s1_0_0, 0xFC190607, 0x073481EE, 0xFF140307, 0xF902F2FC);
	r1 = D(r1, s1_0_0, 0xFEFAF1FB, 0x040000FB, 0xFE1AFBFB, 0x00CB08F3);
	r2 = D(r2, s1_0_0, 0x02040C04, 0x01F9EFFD, 0x1016F00C, 0xFF080E07);
	r3 = D(r3, s1_0_0, 0x0F0CFE10, 0x00FD0806, 0x03FFF402, 0xFDFBFF08);
	r4 = D(r4, s1_0_0, 0xFA0003FE, 0x080BFFFE, 0x060B0EF8, 0xFD02FFFE);
	r5 = D(r5, s1_0_0, 0xFE34EEF4, 0xF00814FB, 0xECD405F1, 0xFC17FBFB);
	r6 = D(r6, s1_0_0, 0x05FCF513, 0x0902FB01, 0x0002FFFF, 0x0AF20D08);
	r7 = D(r7, s1_0_0, 0xFAFCFDF3, 0x03FDFCF1, 0x0809EB10, 0x0315EA10);
	r0 = D(r0, s1_0_1, 0xF51AF105, 0xDFFCB22C, 0x06F90800, 0xFD0EF601);
	r1 = D(r1, s1_0_1, 0xFFFD0AFC, 0x02FEF403, 0x0316CD0E, 0xDAF300F1);
	r2 = D(r2, s1_0_1, 0xF6FE00FF, 0x03F9DF05, 0x0BFBF608, 0xE9FD02FA);
	r3 = D(r3, s1_0_1, 0xFB1E0905, 0x19F9E2F3, 0xF80103FF, 0x00EF07F0);
	r4 = D(r4, s1_0_1, 0x17FA0CF4, 0x0001FA05, 0x0A190007, 0x0303F9FE);
	r5 = D(r5, s1_0_1, 0xF421F807, 0x25031D02, 0xFFD0CDF3, 0x2BF705F6);
	r6 = D(r6, s1_0_1, 0xBEF81403, 0x0EF20404, 0xFC01FB01, 0x1803E7FE);
	r7 = D(r7, s1_0_1, 0xF00002F4, 0xFE140B12, 0x0BE7CDF1, 0xFDE8F5F3);
	r0 = D(r0, s1_0_2, 0xEC15F10F, 0xD312A900, 0xF6FAFE07, 0xF1FA0408);
	r1 = D(r1, s1_0_2, 0xFEF10BF9, 0x03FF0101, 0xEA11FF07, 0xCCFF0AE1);
	r2 = D(r2, s1_0_2, 0xF605070D, 0xFAFED001, 0xE8001603, 0x0CFA02F1);
	r3 = D(r3, s1_0_2, 0xFF06FF0B, 0x0DFF3B17, 0xFEFF01FE, 0x0603F603);
	r4 = D(r4, s1_0_2, 0xF5061507, 0x00F9F902, 0xFA1AFF09, 0xFC01F5FD);
	r5 = D(r5, s1_0_2, 0x002CDC05, 0x1001F10C, 0x20DCFA06, 0x0CEEFEF5);
	r6 = D(r6, s1_0_2, 0xDBFEA203, 0x13FD0CFB, 0xFF01FD01, 0x270B2309);
	r7 = D(r7, s1_0_2, 0x02040508, 0xF70304FD, 0x3217D60B, 0x0FFDF008);
	r0 = D(r0, s1_1_0, 0x09FD0D0E, 0x2F09A12F, 0x0013F5FE, 0xFF08FD1C);
	r1 = D(r1, s1_1_0, 0xDF0D0BD6, 0xFE05FD06, 0x221DC826, 0x01F00AF3);
	r2 = D(r2, s1_1_0, 0xEFFF07F7, 0xF8FAB5F0, 0x141010FA, 0xF21D17F9);
	r3 = D(r3, s1_1_0, 0x0A0009FD, 0xEA0509FA, 0xFA000503, 0xF5FAF101);
	r4 = D(r4, s1_1_0, 0x0707FA00, 0xF0010E03, 0x0601FC0B, 0x00000006);
	r5 = D(r5, s1_1_0, 0x0604E708, 0xF0CBFF05, 0x0AD41215, 0xFC0E0508);
	r6 = D(r6, s1_1_0, 0xF40EF8F5, 0x01FC00EE, 0x02020100, 0x0BF9D0EB);
	r7 = D(r7, s1_1_0, 0xF2DDF1DD, 0xEBFD0BF8, 0x09000000, 0xF515D81A);
	r0 = D(r0, s1_1_1, 0x10FF1726, 0xEB81C809, 0xC5ECF3EF, 0x1E262248);
	r1 = D(r1, s1_1_1, 0xFAEB16D6, 0x30060A08, 0xF020FBFE, 0xE9F7EBF7);
	r2 = D(r2, s1_1_1, 0xF8FA021F, 0xEBF9EDF4, 0xC710EE07, 0xFF1006FE);
	r3 = D(r3, s1_1_1, 0x05F507EF, 0xE5FEE7EB, 0xD4F4FBF5, 0xE8E829E7);
	r4 = D(r4, s1_1_1, 0xFBEF08FB, 0x030E0BEF, 0x0511DA36, 0xFEFE070A);
	r5 = D(r5, s1_1_1, 0xF3064613, 0x2C11F1B3, 0xF8FADAF4, 0xE80C1BE1);
	r6 = D(r6, s1_1_1, 0xEFB703F6, 0x1100EFF0, 0x0B03FB09, 0x2001E7E0);
	r7 = D(r7, s1_1_1, 0xFDFE10E2, 0x340C0F5A, 0x08FB0BEC, 0x20040EF6);
	r0 = D(r0, s1_1_2, 0x8103E508, 0x37EFE319, 0xFEEEBCED, 0xDC08DE0D);
	r1 = D(r1, s1_1_2, 0xFA0310F9, 0x0003F800, 0xEE1DD908, 0xE8F016F7);
	r2 = D(r2, s1_1_2, 0xD906FB04, 0xF10DD702, 0x0000FAE7, 0xF9F30D12);
	r3 = D(r3, s1_1_2, 0x13FDFF05, 0xFAF6F314, 0x04FF06F9, 0xE9F9F7FC);
	r4 = D(r4, s1_1_2, 0xF2F0070A, 0xF405FFF2, 0x120BFEFF, 0x0201F702);
	r5 = D(r5, s1_1_2, 0xE510E211, 0xDBFB8F17, 0x141DD602, 0xFCF720FA);
	r6 = D(r6, s1_1_2, 0x03110BF4, 0xE3050FE7, 0xFDFE01FF, 0x1604FC0D);
	r7 = D(r7, s1_1_2, 0xECF9F6F6, 0x26FD050F, 0xCE18FAFA, 0x130FFAF5);
	r0 = D(r0, s1_2_0, 0x0602FE00, 0xF9210810, 0xDD0EDBFF, 0x100DF91C);
	r1 = D(r1, s1_2_0, 0x0202FEFD, 0x0809FD01, 0xFD21FD1C, 0xF3EA09EF);
	r2 = D(r2, s1_2_0, 0xFE00FC04, 0xE7F2E0F8, 0xF1140DFB, 0xEEFB1306);
	r3 = D(r3, s1_2_0, 0x06F90302, 0xFB02FC04, 0x03FF000A, 0x0FF9D91E);
	r4 = D(r4, s1_2_0, 0x0804F9F6, 0x04F8F7F3, 0x0309EE05, 0x08000008);
	r5 = D(r5, s1_2_0, 0xFF30EBF5, 0x0D030C13, 0xFBC610F5, 0xF3F612F0);
	r6 = D(r6, s1_2_0, 0xF8119810, 0xFA030FF6, 0x0200FDFF, 0x03E8C80A);
	r7 = D(r7, s1_2_0, 0xF6F209E9, 0xFAFE000D, 0x0DF8FA0B, 0x0B13E118);
	r0 = D(r0, s1_2_1, 0xE7F2F31A, 0x1612F411, 0xFCFCF2E3, 0x1903EBF3);
	r1 = D(r1, s1_2_1, 0xF2FBF907, 0x0E01F905, 0xE7081111, 0xFCF116CC);
	r2 = D(r2, s1_2_1, 0x0205010D, 0xF300FDF0, 0xEDEC09F8, 0x25F807FE);
	r3 = D(r3, s1_2_1, 0x04F502F9, 0xF40B2301, 0xF1FFFF02, 0xFBE3EFF9);
	r4 = D(r4, s1_2_1, 0xF7F3F9F7, 0x04FDFCEE, 0x090E10F8, 0x1600F219);
	r5 = D(r5, s1_2_1, 0x172ED91B, 0xC9E1BB6B, 0xD5F03FE6, 0x2BFAF300);
	r6 = D(r6, s1_2_1, 0x1BE4DC0C, 0xE5F722E8, 0x0C0300EB, 0x311BFDE1);
	r7 = D(r7, s1_2_1, 0xFF000CE8, 0x08FC0008, 0x050A070B, 0x22FBFC0C);
	r0 = D(r0, s1_2_2, 0xA811D4EF, 0xAF02E216, 0xFDF717E8, 0xFDFE0906);
	r1 = D(r1, s1_2_2, 0xFD00FB09, 0x0401FF00, 0x2D18F516, 0x06F005ED);
	r2 = D(r2, s1_2_2, 0xE20B0405, 0xF9FEFCF8, 0xF20515FA, 0x15F71CF2);
	r3 = D(r3, s1_2_2, 0x0DFB0BFE, 0xDD070BFA, 0x03FF01FC, 0x0BE7E50C);
	r4 = D(r4, s1_2_2, 0xF102F2EC, 0x07FC00EE, 0x1A0BF50B, 0x0E000003);
	r5 = D(r5, s1_2_2, 0xFC4D05F2, 0x01FCE80B, 0xE1F51ADB, 0xF305F908);
	r6 = D(r6, s1_2_2, 0xFEE5F7E0, 0xF404030C, 0xFFFE01FA, 0xFA03F1FE);
	r7 = D(r7, s1_2_2, 0xF204FADE, 0x14F4F704, 0x061CEF10, 0xF803E907);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFDE905FF, 0xDB1FF108, 0x12E40813, 0xF110F805);
	r1 = D(r1, s0_0_0, 0x0B18010B, 0xFCF5FD02, 0xEAE8FDFB, 0xF7EA0315);
	r2 = D(r2, s0_0_0, 0x041C04FF, 0x03F403F9, 0x06FAFFDE, 0x010203FF);
	r3 = D(r3, s0_0_0, 0xFBF6020E, 0xFC2510F6, 0xFD0B02FE, 0x050305FC);
	r4 = D(r4, s0_0_0, 0x03060601, 0xFBF505F5, 0x090FF711, 0x0003FEFF);
	r5 = D(r5, s0_0_0, 0xF8F4EEF4, 0x011A09F4, 0xFF1C0430, 0x171503DA);
	r6 = D(r6, s0_0_0, 0x051F16F9, 0x01100EFC, 0x01000100, 0xFD0515FD);
	r7 = D(r7, s0_0_0, 0x000D0601, 0xF70EECFA, 0x03F8160D, 0xFD0DEA10);
	r0 = D(r0, s0_0_1, 0x02F505D0, 0xD6E5DCE5, 0x041E15F9, 0xF8F31307);
	r1 = D(r1, s0_0_1, 0x05F2F707, 0x0DFB0202, 0x0E130FEB, 0xF2FB0108);
	r2 = D(r2, s0_0_1, 0x1A0F03FF, 0x0E0DFF07, 0xF503F8F1, 0xC10A06F7);
	r3 = D(r3, s0_0_1, 0x0226F8EF, 0xFD0108FC, 0x15FDF501, 0x0806180C);
	r4 = D(r4, s0_0_1, 0x13090F09, 0x1F010601, 0xF80C09EF, 0xF7000100);
	r5 = D(r5, s0_0_1, 0xF2F7F600, 0x172B2513, 0xF9320EBB, 0x031324E4);
	r6 = D(r6, s0_0_1, 0x32FCF608, 0x1E120704, 0xFC030000, 0x0522F8F7);
	r7 = D(r7, s0_0_1, 0x98FC16FD, 0xE0FF06FC, 0x1C1C19BF, 0xF8FDF711);
	r0 = D(r0, s0_0_2, 0x81FB0105, 0xF811F513, 0x3D0200E9, 0xBBFC0410);
	r1 = D(r1, s0_0_2, 0x2A000114, 0x02FFFE00, 0xFD05FFF6, 0xE7F1FE14);
	r2 = D(r2, s0_0_2, 0x1A0B03F0, 0x810301FC, 0x410EF8F4, 0xDAFE090A);
	r3 = D(r3, s0_0_2, 0xD1010309, 0x591401F7, 0x06000401, 0xFE0507EF);
	r4 = D(r4, s0_0_2, 0x3C020705, 0x02FF010D, 0x230004FE, 0xF800FE03);
	r5 = D(r5, s0_0_2, 0x8107F101, 0x220E06F8, 0xA3FF0F0F, 0x81F1EEE0);
	r6 = D(r6, s0_0_2, 0x23F1090D, 0xA30708FC, 0xF9010101, 0x9A1211F0);
	r7 = D(r7, s0_0_2, 0xAD0306FE, 0x1405FD14, 0xDC0C05AD, 0xE604FD09);
	r0 = D(r0, s0_1_0, 0xFBC81109, 0x09DED205, 0xEA08FD13, 0x0EB4F4F3);
	r1 = D(r1, s0_1_0, 0x0C090CEB, 0x0100FDFA, 0x07B3E4FC, 0x00F81406);
	r2 = D(r2, s0_1_0, 0xFC04FCFB, 0xFB0E0CFD, 0xFB12D7F8, 0x0A02F3E4);
	r3 = D(r3, s0_1_0, 0x010C0315, 0xF00213ED, 0x05010DF2, 0xF7FDE710);
	r4 = D(r4, s0_1_0, 0xFD2C0DC4, 0xFF0209FF, 0x01070718, 0xFB05F5FC);
	r5 = D(r5, s0_1_0, 0x18F5F4E9, 0xFFABD9E5, 0x03F01320, 0x0A090AE5);
	r6 = D(r6, s0_1_0, 0x021508C4, 0x0825FFED, 0x00F90100, 0xF5F405FD);
	r7 = D(r7, s0_1_0, 0x0201FEF6, 0xF90AFAFD, 0xFD00FDF8, 0xF8080D02);
	r0 = D(r0, s0_1_1, 0xACBBF139, 0x81DFDD09, 0x810C052C, 0x22051CDC);
	r1 = D(r1, s0_1_1, 0x1AEE00DA, 0x4500FB05, 0x940706E6, 0xDA081AEC);
	r2 = D(r2, s0_1_1, 0x09E3F728, 0x01FFF0FF, 0xFF0009EC, 0x17FAE6FE);
	r3 = D(r3, s0_1_1, 0x0A1616E6, 0x1EE215E6, 0x16FC0AF6, 0xF9170FF3);
	r4 = D(r4, s0_1_1, 0x0F052BF6, 0x25E909FD, 0x0921FE0F, 0x18F90B07);
	r5 = D(r5, s0_1_1, 0x08EAFB0A, 0x0BE11FF4, 0xE71A0729, 0x07E3F5CB);
	r6 = D(r6, s0_1_1, 0xE506F27E, 0x0E01F9F3, 0x192BFEFC, 0x300704D2);
	r7 = D(r7, s0_1_1, 0x99040819, 0x121A06F9, 0xFF070FD9, 0xEFF104CE);
	r0 = D(r0, s0_1_2, 0x96000D19, 0xA703F0E1, 0xBD0701E1, 0x3A000614);
	r1 = D(r1, s0_1_2, 0xE6FDF81B, 0x02FF01FB, 0xEBFDFDE8, 0xD10409F0);
	r2 = D(r2, s0_1_2, 0x03FBFB05, 0x950100FF, 0x061501D3, 0x8104FA21);
	r3 = D(r3, s0_1_2, 0xE00000FC, 0x0AF8063D, 0x1000FE00, 0xCAFCF5F4);
	r4 = D(r4, s0_1_2, 0x81EFFB06, 0x080EF803, 0x230B09E5, 0x2302FBFF);
	r5 = D(r5, s0_1_2, 0x8104F81D, 0x17FAF208, 0xBDF909EF, 0x81090FF4);
	r6 = D(r6, s0_1_2, 0x1DF004DB, 0x3BFE08D3, 0xDC01FF01, 0xBCF708F9);
	r7 = D(r7, s0_1_2, 0xD20309F9, 0xF9000103, 0xF3EA05FA, 0xD9F80804);
	r0 = D(r0, s0_2_0, 0x04C60D13, 0xDD03EDFC, 0xFE16E720, 0xFF0A0BF2);
	r1 = D(r1, s0_2_0, 0x03FA0302, 0x01FDFD04, 0xF5EFFB09, 0xF906FEF2);
	r2 = D(r2, s0_2_0, 0xFAF4FF00, 0x02FF0200, 0xFE190BE0, 0x0107F5ED);
	r3 = D(r3, s0_2_0, 0x070700FD, 0x0E0902DD, 0x01FDFFFA, 0xF5ECF51A);
	r4 = D(r4, s0_2_0, 0x0307F9F4, 0x020A07E7, 0x050A051C, 0x01FD01FF);
	r5 = D(r5, s0_2_0, 0x06F7EE1B, 0x0E1210D4, 0x001707F5, 0x101C1307);
	r6 = D(r6, s0_2_0, 0x0BF3000C, 0x0306F5FD, 0x01FCFF01, 0x09E5FBFA);
	r7 = D(r7, s0_2_0, 0x050503F6, 0x03020005, 0x01FC0805, 0x070B0201);
	r0 = D(r0, s0_2_1, 0x20F20A81, 0xDA02FA23, 0xBC03011C, 0xFD020606);
	r1 = D(r1, s0_2_1, 0x15F6FB03, 0x07020101, 0x090A01CF, 0x080C0BEE);
	r2 = D(r2, s0_2_1, 0x01F40104, 0x05010415, 0x06FDF4FA, 0x0011010F);
	r3 = D(r3, s0_2_1, 0x030600EF, 0xFEEFFBDC, 0xFC010001, 0xC80C0412);
	r4 = D(r4, s0_2_1, 0x02FBFB81, 0x030A0503, 0x09050B00, 0x0802FEF9);
	r5 = D(r5, s0_2_1, 0xDEE5F5F6, 0xE8FA0704, 0xF00C1102, 0x11EF02EE);
	r6 = D(r6, s0_2_1, 0x0BF90FD9, 0xF1E60301, 0xFC04010B, 0xF005131C);
	r7 = D(r7, s0_2_1, 0xD8070307, 0x02060702, 0xFB03FC00, 0xF60706F2);
	r0 = D(r0, s0_2_2, 0x5F0601D2, 0x81F5F909, 0x8F0900FF, 0x15FF0107);
	r1 = D(r1, s0_2_2, 0xFE02010C, 0x03FF0001, 0xE5000805, 0xB4FC09F5);
	r2 = D(r2, s0_2_2, 0x14FE000A, 0x8107FEFC, 0xDB0007F6, 0x81FCFFF8);
	r3 = D(r3, s0_2_2, 0x35030303, 0x3FE80DE4, 0xFD0100FF, 0x13FEFCED);
	r4 = D(r4, s0_2_2, 0x0CFE05E5, 0xD90600F9, 0x7F030808, 0x1907FD05);
	r5 = D(r5, s0_2_2, 0xEF01F9E9, 0x810CEEFE, 0x35F60806, 0xD7F00210);
	r6 = D(r6, s0_2_2, 0xF40407FE, 0xDEF5010A, 0x01040101, 0xF70AF60F);
	r7 = D(r7, s0_2_2, 0xDA0104F9, 0x3905FF00, 0x3EFF02FD, 0xF403FEFD);
	r0 = D(r0, s1_0_0, 0xF10FCA07, 0x2921E781, 0xF6EF81C6, 0x030C81F4);
	r1 = D(r1, s1_0_0, 0x1302FF0A, 0xF80481FB, 0x0603B204, 0x05E1FC27);
	r2 = D(r2, s1_0_0, 0x0FFCF2FB, 0x1FFFE6CD, 0xF403F70D, 0x120BEE06);
	r3 = D(r3, s1_0_0, 0x0E0510E8, 0xFE0902F2, 0x06FE4705, 0xF1FD1400);
	r4 = D(r4, s1_0_0, 0xF7FF22D8, 0xFD04DAF1, 0x0EFBF00A, 0xFEFF0803);
	r5 = D(r5, s1_0_0, 0x231AF613, 0xAB06FE01, 0xEDFFEB38, 0xFE0A15F6);
	r6 = D(r6, s1_0_0, 0xF9070EE6, 0x020215F5, 0xFD01F9FF, 0xDAFD0E08);
	r7 = D(r7, s1_0_0, 0x0AFA03FB, 0x1102E20D, 0xF2FE0810, 0xEC10EAF8);
	r0 = D(r0, s1_0_1, 0xF107F50A, 0x110EFE07, 0xF6FD03FD, 0xD008E8F1);
	r1 = D(r1, s1_0_1, 0x08FBCDF0, 0xF6000002, 0x09030B0E, 0x1BE92B1F);
	r2 = D(r2, s1_0_1, 0x06FDFBF1, 0x0408F51A, 0x0006D9B1, 0xE7F7ECF2);
	r3 = D(r3, s1_0_1, 0x31FD0003, 0x2109EACC, 0xFCFFF9FE, 0x09FFFEE3);
	r4 = D(r4, s1_0_1, 0x28FE07ED, 0xD405A6F6, 0x810B8124, 0x0404FEFE);
	r5 = D(r5, s1_0_1, 0xED0AE618, 0x810D03FF, 0x25F6D4BC, 0x10F4F917);
	r6 = D(r6, s1_0_1, 0x13EBD102, 0xFE01030D, 0x01FF09FF, 0xF2FE041C);
	r7 = D(r7, s1_0_1, 0xF60507F7, 0xC408D50C, 0x0E0CCCEC, 0xC905040A);
	r0 = D(r0, s1_0_2, 0xFA060908, 0x1D000525, 0xFFFD09FE, 0xFEFE0F0E);
	r1 = D(r1, s1_0_2, 0xF9FDFE05, 0xFC010201, 0x08F501ED, 0x14EA04F5);
	r2 = D(r2, s1_0_2, 0xFFFCFA05, 0xF500FEE2, 0x0DFD039D, 0xF7050308);
	r3 = D(r3, s1_0_2, 0xF9F50305, 0xE104F715, 0x02FE0103, 0xFC0B08FA);
	r4 = D(r4, s1_0_2, 0x060206FA, 0xEC03FCF2, 0xFD0905EB, 0xFB000001);
	r5 = D(r5, s1_0_2, 0x0307F00C, 0xF90D00F3, 0x062C0D27, 0x00DC14CF);
	r6 = D(r6, s1_0_2, 0xF9FA09AD, 0xFB1203FD, 0xFB010401, 0xF80A06E8);
	r7 = D(r7, s1_0_2, 0x0AFD06ED, 0x00F7FE0B, 0x191704FC, 0xFFF6FF00);
	r0 = D(r0, s1_1_0, 0x060AF1D9, 0xF929D8DC, 0x110BC745, 0xFE14EAF5);
	r1 = D(r1, s1_1_0, 0xEB0A0D1D, 0xFA02F003, 0xFE05E4E9, 0x05CEFD28);
	r2 = D(r2, s1_1_0, 0x0600E921, 0xEA0DF106, 0x1F02F6D6, 0xFAFE0CF6);
	r3 = D(r3, s1_1_0, 0x03FC010F, 0x06FD21F2, 0xF1070F07, 0xE80AD281);
	r4 = D(r4, s1_1_0, 0xFEFF2327, 0x0504FE06, 0x04FCF617, 0x05010BFE);
	r5 = D(r5, s1_1_0, 0x0F18F7FB, 0x810C21F2, 0xD3EB19E9, 0xFB0C0718);
	r6 = D(r6, s1_1_0, 0x21051602, 0x1205F9ED, 0x0003F6F8, 0xE50809E1);
	r7 = D(r7, s1_1_0, 0x10FFF90A, 0x0600FCF7, 0xF9050BF7, 0xF10908E5);
	r0 = D(r0, s1_1_1, 0x83201A11, 0x1B2FECF7, 0xF9E503E6, 0xFA01F8F9);
	r1 = D(r1, s1_1_1, 0xF90CFDDA, 0xED07F8FD, 0xF10FEA18, 0xF4F20011);
	r2 = D(r2, s1_1_1, 0xFA10FCFC, 0x0EFCFAFC, 0x09F7B2EA, 0xE8081608);
	r3 = D(r3, s1_1_1, 0xF31AF9EE, 0xA0030810, 0x0BE90904, 0x000B271C);
	r4 = D(r4, s1_1_1, 0xE40408EC, 0xE0E1F9FA, 0x0AD6DC32, 0xEA0300FD);
	r5 = D(r5, s1_1_1, 0x05B801DE, 0x81FF1FDD, 0x3513FEBD, 0x180A05DE);
	r6 = D(r6, s1_1_1, 0xF189F546, 0x0405D80F, 0x81FDF105, 0xE1FB020F);
	r7 = D(r7, s1_1_1, 0x03060A06, 0x0FE1FEF2, 0xF10D0BF0, 0xFCE907CA);
	r0 = D(r0, s1_1_2, 0x130BFB0A, 0x0720FA05, 0x040701F5, 0x0513FE11);
	r1 = D(r1, s1_1_2, 0xFCFBF3FD, 0xFD0501FF, 0x080802F5, 0x09EA09CE);
	r2 = D(r2, s1_1_2, 0x06F1FEFC, 0x0201FAF7, 0x0A06EFFD, 0xFDFD030C);
	r3 = D(r3, s1_1_2, 0x0C100204, 0xEBFD0019, 0x04010108, 0x070F03F6);
	r4 = D(r4, s1_1_2, 0x14F105E7, 0x1EFEFC0A, 0x0616FFFB, 0x01030506);
	r5 = D(r5, s1_1_2, 0x091FF41D, 0xDA070FE7, 0xFF0A09F2, 0xE2E9F0F5);
	r6 = D(r6, s1_1_2, 0x0E2402C1, 0xFA1806F4, 0xF5FCFA07, 0xFA13060D);
	r7 = D(r7, s1_1_2, 0x040D07F9, 0xF90D0604, 0x122B0022, 0x010000F5);
	r0 = D(r0, s1_2_0, 0xFE1C0EE1, 0x0D31F2E3, 0x1C06E7EB, 0xF4130605);
	r1 = D(r1, s1_2_0, 0xFEFB05F3, 0x010701FD, 0xFD2E0219, 0x17E508FC);
	r2 = D(r2, s1_2_0, 0xF70004F7, 0xFE08F9F9, 0x16200811, 0xFFF40BFE);
	r3 = D(r3, s1_2_0, 0x0309FFFC, 0x071008E0, 0x00FC0103, 0xF2E3FA3C);
	r4 = D(r4, s1_2_0, 0x0711FAD1, 0xFC0803F0, 0x0300040F, 0xFC0504FF);
	r5 = D(r5, s1_2_0, 0xD423EF15, 0xDEE9F5EA, 0x0BFF090E, 0xF5030AFB);
	r6 = D(r6, s1_2_0, 0xFC05F9F6, 0x0110F903, 0xFC00FD02, 0xF104FF13);
	r7 = D(r7, s1_2_0, 0xFF0E05F4, 0x04080302, 0x03F9FD0B, 0xFB1E04F9);
	r0 = D(r0, s1_2_1, 0x81390611, 0xF71BFA1C, 0xFCF6FDFB, 0xF908020C);
	r1 = D(r1, s1_2_1, 0x0CF6FB00, 0xF9030006, 0xE612FD00, 0xEB1908EE);
	r2 = D(r2, s1_2_1, 0xEF010600, 0xFB0DF9F6, 0x010107FA, 0x02E2FE0B);
	r3 = D(r3, s1_2_1, 0x0D08FEF5, 0x072502D6, 0x01F8FFFE, 0xFD0B0106);
	r4 = D(r4, s1_2_1, 0x12FFFCE7, 0x020603F4, 0xFAF90806, 0x03F5000C);
	r5 = D(r5, s1_2_1, 0x3B17F635, 0x88FCFE0A, 0x0B260BF9, 0x01F1FEF7);
	r6 = D(r6, s1_2_1, 0x14FC0C22, 0xEC0105DF, 0x02020002, 0xE30707C9);
	r7 = D(r7, s1_2_1, 0x090507ED, 0x070306F8, 0x04F3FB10, 0x081E0705);
	r0 = D(r0, s1_2_2, 0x216F080E, 0xE43FFFF7, 0xF9F6FF08, 0xFC150400);
	r1 = D(r1, s1_2_2, 0xF8080106, 0xFF01FF06, 0xFC18FA0B, 0x02FB04F3);
	r2 = D(r2, s1_2_2, 0xFAFB0105, 0x07F8F7FB, 0x0E4FFC0B, 0x17FA00F3);
	r3 = D(r3, s1_2_2, 0x050202FA, 0xFA2402ED, 0xFEF90001, 0x0AF90504);
	r4 = D(r4, s1_2_2, 0x01150503, 0x040402FB, 0x0005050F, 0xFDF50002);
	r5 = D(r5, s1_2_2, 0xFCF501ED, 0xFC3A00F5, 0x052706EA, 0x09CB01EC);
	r6 = D(r6, s1_2_2, 0x191D08E3, 0xED07FF09, 0xFEFBFE09, 0x0DFDFE12);
	r7 = D(r7, s1_2_2, 0x01F605F2, 0x08040307, 0x05FC0412, 0x0818020C);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFA0E02FD, 0xA54FDDFB, 0xFBFEF5E3, 0x0510FE06);
	r1 = D(r1, s0_0_0, 0x24F506FA, 0x0803FCFE, 0xEC30F005, 0xFCCF0C02);
	r2 = D(r2, s0_0_0, 0x05010900, 0xFCFA05F9, 0xF8FBE8F0, 0x0402010E);
	r3 = D(r3, s0_0_0, 0xF3060206, 0x0809F010, 0xFE0200FC, 0x0AFF0802);
	r4 = D(r4, s0_0_0, 0x07F2FBED, 0x03FE010C, 0xF509F602, 0x030200FC);
	r5 = D(r5, s0_0_0, 0x073FC2FA, 0x1118050E, 0x05A6F600, 0x02F3132C);
	r6 = D(r6, s0_0_0, 0xFCF20CBE, 0xFFF904F4, 0xFF01FFFC, 0xDCF70AFE);
	r7 = D(r7, s0_0_0, 0x0E0003F6, 0x0215FDFA, 0xF705F709, 0xF40005ED);
	r0 = D(r0, s0_0_1, 0x070D0411, 0x3D1DEE3D, 0x07F1DDE0, 0xE112FBF5);
	r1 = D(r1, s0_0_1, 0x0E1005FA, 0x0BFE0104, 0x1F13FA12, 0x0EEC01DD);
	r2 = D(r2, s0_0_1, 0x23FAF7F1, 0xEBF7EF03, 0x2802EAD4, 0x0F000019);
	r3 = D(r3, s0_0_1, 0x0F1EF0EE, 0x11FFD7FB, 0xF3020500, 0x25FF030E);
	r4 = D(r4, s0_0_1, 0x16ECF0F5, 0xFA13FF0E, 0x810E04E2, 0x0703FA04);
	r5 = D(r5, s0_0_1, 0xE22FE312, 0xB51C0104, 0x36DE0048, 0x0BFB09ED);
	r6 = D(r6, s0_0_1, 0xE1EF071D, 0x0CED0604, 0x01030000, 0xF500F8E3);
	r7 = D(r7, s0_0_1, 0xF30F15ED, 0xAC1C13F8, 0x0B2B131C, 0xA601F8F6);
	r0 = D(r0, s0_0_2, 0x021BEDFE, 0xDB229F2F, 0x1813FB07, 0xF30BFFFB);
	r1 = D(r1, s0_0_2, 0x08050AE5, 0xFF050104, 0xEF2A00F5, 0x04D81201);
	r2 = D(r2, s0_0_2, 0x06FCF7FB, 0xF5F0E1E0, 0x0F01C2DC, 0x170FF50A);
	r3 = D(r3, s0_0_2, 0xFFFEE6FD, 0xF7F7EFEB, 0xFE030403, 0x0EFFF5F4);
	r4 = D(r4, s0_0_2, 0x0FF3FCF6, 0xF207040E, 0xFD060109, 0x0004FF02);
	r5 = D(r5, s0_0_2, 0x1738091E, 0x16F7FA15, 0x23AFAB22, 0xFCF4DE1D);
	r6 = D(r6, s0_0_2, 0xE3E81210, 0x13F6E2F5, 0xF503FF01, 0xFBFBFFE2);
	r7 = D(r7, s0_0_2, 0x0FF414FD, 0x171D0904, 0x123D8D06, 0xE805FE03);
	r0 = D(r0, s0_1_0, 0xFA08021A, 0xFA21B689, 0xE7F1EDDF, 0xF91D02FB);
	r1 = D(r1, s0_1_0, 0x0AE604FF, 0xFE0608FC, 0x1522E9E5, 0xFFD6F7F5);
	r2 = D(r2, s0_1_0, 0x02EF0709, 0x12FC0F08, 0x0B0000AC, 0x1506FC25);
	r3 = D(r3, s0_1_0, 0xF7FF04F4, 0xFB1D050B, 0x000002F8, 0xF0F002D9);
	r4 = D(r4, s0_1_0, 0xF6FB1A10, 0x010D1104, 0x0201FAEC, 0x0101FDFB);
	r5 = D(r5, s0_1_0, 0x21260335, 0xFFF30E43, 0xFFE5E521, 0x0BFD0108);
	r6 = D(r6, s0_1_0, 0x04AB0AF5, 0xFD150C16, 0x0102FFFE, 0x11E9FCDC);
	r7 = D(r7, s0_1_0, 0x07FE0FEA, 0x081AF811, 0xFAF80305, 0xFF051610);
	r0 = D(r0, s0_1_1, 0xE10C1219, 0xC50F1654, 0xEB0A0C06, 0xE4140EEC);
	r1 = D(r1, s0_1_1, 0x1CE9E806, 0x20FD09FC, 0x08EC2CFB, 0x1ABBFFCD);
	r2 = D(r2, s0_1_1, 0x0D03F10B, 0xF017000E, 0x06031ED1, 0x08E9FF15);
	r3 = D(r3, s0_1_1, 0xF6170503, 0xFDFA100F, 0xFA0081FF, 0x01E81C22);
	r4 = D(r4, s0_1_1, 0xE9F41AFA, 0xE9E5F5DD, 0xE708DACE, 0xF5FBF714);
	r5 = D(r5, s0_1_1, 0x1F078122, 0x0EF3F749, 0xFDD2EBD1, 0xEDFFE60C);
	r6 = D(r6, s0_1_1, 0x05088105, 0xF8FEF2DC, 0xEDFF0100, 0xC70C1DDE);
	r7 = D(r7, s0_1_1, 0x070302E7, 0xFDFD08FE, 0xE20DFD14, 0xE41C8106);
	r0 = D(r0, s0_1_2, 0x8118E818, 0x1BED132C, 0xF3F51F0B, 0x9B1281FE);
	r1 = D(r1, s0_1_2, 0x11F102EC, 0xFF020C03, 0x0025DB21, 0x18DD0A0D);
	r2 = D(r2, s0_1_2, 0xECF70CEB, 0xF10E08F5, 0xF412FBE0, 0x0917FCFE);
	r3 = D(r3, s0_1_2, 0x07F8F6F5, 0x0E4434F0, 0xF801FF01, 0xFBFDFF04);
	r4 = D(r4, s0_1_2, 0x03FD28FE, 0xDD0FF701, 0xE9030F07, 0x11FF0A02);
	r5 = D(r5, s0_1_2, 0x153ADAD7, 0x23211102, 0xF7F61903, 0x09F9F211);
	r6 = D(r6, s0_1_2, 0x25D4DDF2, 0x16FED2FD, 0xF005F8FD, 0xF51507F2);
	r7 = D(r7, s0_1_2, 0xF20B0EED, 0x040A0CFD, 0xFF12EDFE, 0x04071806);
	r0 = D(r0, s0_2_0, 0x010BE9FC, 0xE910BBC9, 0xF803D8AB, 0xF3FBFCF1);
	r1 = D(r1, s0_2_0, 0xFDF30008, 0xFEFF00FE, 0xFC20F6F0, 0xFAFFFBE1);
	r2 = D(r2, s0_2_0, 0x08FAFEFC, 0x00FAFBFF, 0x02F8EF81, 0x12E80C28);
	r3 = D(r3, s0_2_0, 0x01FAFF02, 0x12240215, 0x0202FF07, 0x0701F7EC);
	r4 = D(r4, s0_2_0, 0xF9F7FEF5, 0x020600FF, 0xFA20F6FE, 0x02000402);
	r5 = D(r5, s0_2_0, 0xFF24E002, 0xF6EE0906, 0xFBE9F900, 0x05DDFF34);
	r6 = D(r6, s0_2_0, 0x04F513F7, 0xFE0B08FA, 0x0208FF00, 0xF01EFDDB);
	r7 = D(r7, s0_2_0, 0xFF1507E3, 0x0407FB08, 0x02F6FA0D, 0xED0904E2);
	r0 = D(r0, s0_2_1, 0x11D9200C, 0x08F30B11, 0x18DD0505, 0x0CF3F8FE);
	r1 = D(r1, s0_2_1, 0xF208F0D2, 0x02000101, 0x1A06F91A, 0x0ED9FF09);
	r2 = D(r2, s0_2_1, 0x090602DD, 0xF6060AF9, 0x1508FCB3, 0x2CF61017);
	r3 = D(r3, s0_2_1, 0xFDFB04F8, 0x010DE406, 0xFD03FDFF, 0xFEE40220);
	r4 = D(r4, s0_2_1, 0x0206EFF6, 0xFEEDFEF7, 0x04E50401, 0xFF000703);
	r5 = D(r5, s0_2_1, 0xF332F21F, 0xEDCEEB24, 0x0EE9E616, 0xFAFAFC12);
	r6 = D(r6, s0_2_1, 0x15E5D513, 0x010403F0, 0xFEFDFEFB, 0x10051BD5);
	r7 = D(r7, s0_2_1, 0x00C712F6, 0xFB1303F1, 0x030FF6FB, 0x05F3FBF4);
	r0 = D(r0, s0_2_2, 0x81160CFD, 0xF2090B05, 0xFFD40103, 0x0A0801FE);
	r1 = D(r1, s0_2_2, 0x0AFFFFF5, 0x0204FD02, 0x141F0FF6, 0xFDF30601);
	r2 = D(r2, s0_2_2, 0xF2FF05ED, 0xE7FF04FE, 0x021AEA0F, 0x1200090E);
	r3 = D(r3, s0_2_2, 0x09F1FF04, 0xEFF50702, 0x02FD00FF, 0x0101010D);
	r4 = D(r4, s0_2_2, 0xF9FFC800, 0xF4EA1200, 0xEE150901, 0x0A03F504);
	r5 = D(r5, s0_2_2, 0x1727E814, 0xFEF11524, 0x00D3FFFA, 0x0BFA11F9);
	r6 = D(r6, s0_2_2, 0x09E5EBFF, 0x000511EC, 0xF50402FC, 0xE5F01610);
	r7 = D(r7, s0_2_2, 0xFB0013FB, 0x01FDF90A, 0xFE090007, 0xF916EEFD);
	r0 = D(r0, s1_0_0, 0xF4061109, 0xCB0EC913, 0xE9F607EA, 0xF1F610FE);
	r1 = D(r1, s1_0_0, 0x01F7F000, 0xFC02FEFD, 0xD60707FA, 0x1AFFDF07);
	r2 = D(r2, s1_0_0, 0x0904FCF5, 0x040503ED, 0xE9FD25E3, 0xE0F417FA);
	r3 = D(r3, s1_0_0, 0xFA03FA0C, 0x080D06F6, 0x01FE0207, 0x0603FCF1);
	r4 = D(r4, s1_0_0, 0x0E030E01, 0x020300FF, 0xFEFC03FA, 0x0000FFFF);
	r5 = D(r5, s1_0_0, 0xE6FC12FD, 0x070B19DC, 0x1D0D0FEC, 0xFC1423CA);
	r6 = D(r6, s1_0_0, 0x0BF4F218, 0x110109FD, 0x00FF0100, 0x0C09ED1B);
	r7 = D(r7, s1_0_0, 0x16FD00DD, 0xF8050702, 0xFEF8FDF5, 0x01FD1209);
	r0 = D(r0, s1_0_1, 0x04F807F9, 0x8CFC082E, 0xF1F8E5F0, 0x02F4F5F1);
	r1 = D(r1, s1_0_1, 0xFDF8110A, 0xFCFFF7FD, 0xF8EBE8FA, 0x150BCDEF);
	r2 = D(r2, s1_0_1, 0x0EFFFAFD, 0xF20AFAF9, 0x251CF620, 0x01F218FB);
	r3 = D(r3, s1_0_1, 0x00FDFE05, 0x0C0929EE, 0xFF010408, 0x14FEF9ED);
	r4 = D(r4, s1_0_1, 0x12FF0407, 0xFDFEFA00, 0xE6F2FA15, 0xFDFE02FD);
	r5 = D(r5, s1_0_1, 0xDEF71D18, 0xFCF5EA0C, 0xC9024806, 0x2DEFD40C);
	r6 = D(r6, s1_0_1, 0x07EADE21, 0x080A18D6, 0xFFFF01FF, 0x0E0B0018);
	r7 = D(r7, s1_0_1, 0x0E0201DD, 0xF7000310, 0x05FB050B, 0xF1EC16CF);
	r0 = D(r0, s1_0_2, 0x0B03F7DC, 0xB52AFFFD, 0x04FB0602, 0xFCFEF307);
	r1 = D(r1, s1_0_2, 0xFFF804ED, 0xFCFF0103, 0xFEF80A0A, 0x230DE3E4);
	r2 = D(r2, s1_0_2, 0x0603FAED, 0x0906F912, 0x11E0FB41, 0xFDE9FCDC);
	r3 = D(r3, s1_0_2, 0x04FAFB08, 0xE613DAE6, 0xFE00FDFB, 0x170808F6);
	r4 = D(r4, s1_0_2, 0x111212F7, 0x04FF00DF, 0xFD01040F, 0x00FB0201);
	r5 = D(r5, s1_0_2, 0xC5FEF720, 0xF7010AFA, 0x0C02FFFD, 0xF8101A2D);
	r6 = D(r6, s1_0_2, 0x2305091D, 0x05FDFDED, 0xFDFF02FE, 0xDC04F704);
	r7 = D(r7, s1_0_2, 0x0D09F4F1, 0x00F90800, 0xDBF91417, 0xEDFCEAFC);
	r0 = D(r0, s1_1_0, 0xFB03F908, 0xA9CD3033, 0xD6E6F1E6, 0xF5FE05FA);
	r1 = D(r1, s1_1_0, 0x100BFAF6, 0xF7F2F606, 0xEEE101FA, 0x150DEA04);
	r2 = D(r2, s1_1_0, 0x0C0F02FF, 0x02FEEC06, 0xF4DA1D3E, 0xFAFF1DF6);
	r3 = D(r3, s1_1_0, 0x07FE0FF5, 0xFF13FE03, 0x00F704FD, 0x0A04F5FA);
	r4 = D(r4, s1_1_0, 0x0C0714F0, 0x09FF050D, 0x0400FB02, 0xFDF9FB01);
	r5 = D(r5, s1_1_0, 0xF20404FD, 0x01FB00DD, 0x0006FB0E, 0x0B0C0CEB);
	r6 = D(r6, s1_1_0, 0xFD161403, 0x0A0D12EC, 0xFDFF00FF, 0x06F92209);
	r7 = D(r7, s1_1_0, 0x1511F7E2, 0xF0F70B13, 0x03FE0CFC, 0xFDFD14FE);
	r0 = D(r0, s1_1_1, 0xD024480F, 0xDE2115F0, 0x1C1BEA0E, 0xA1F77F05);
	r1 = D(r1, s1_1_1, 0xFE1115EF, 0xFB08F0FE, 0xE8F227ED, 0x0D0E21F9);
	r2 = D(r2, s1_1_1, 0x0A1BED0D, 0xF93E010D, 0xDFE5100F, 0x10FB0B04);
	r3 = D(r3, s1_1_1, 0xDBF5EDF5, 0x260CC206, 0xF30D08FE, 0xF600D6FD);
	r4 = D(r4, s1_1_1, 0x11FCD100, 0xD8CE02F6, 0xDBFE180F, 0xFDF3F903);
	r5 = D(r5, s1_1_1, 0xD9F50C1D, 0xF910E01B, 0x2B2CF158, 0x1811FC03);
	r6 = D(r6, s1_1_1, 0xF0F7CDEF, 0x12F1E7CF, 0x050104FE, 0xF214DE1B);
	r7 = D(r7, s1_1_1, 0x191C14F1, 0xD6EB5E15, 0xF318CA0B, 0xE5E021FC);
	r0 = D(r0, s1_1_2, 0xF3D10606, 0xA2FB991C, 0x0B1AFFE2, 0x0FBCF6EC);
	r1 = D(r1, s1_1_2, 0xFAFC27D7, 0xFEFD02FD, 0xEF0E1A08, 0x0318FCEE);
	r2 = D(r2, s1_1_2, 0xFF1DED06, 0xF70AF0E5, 0x07D91DB6, 0x15FAE5FE);
	r3 = D(r3, s1_1_2, 0x021D0AEC, 0x092DD326, 0xFFFC0303, 0x0C0DFD0A);
	r4 = D(r4, s1_1_2, 0x100D07F8, 0xF7D31202, 0xE9E60CC1, 0xFCFB02F8);
	r5 = D(r5, s1_1_2, 0xD3F52815, 0xF610E4E8, 0xF4E7E018, 0xF6E30901);
	r6 = D(r6, s1_1_2, 0x260A3CDD, 0x091706E1, 0xFB060708, 0xEFFB0328);
	r7 = D(r7, s1_1_2, 0x1F0AE4F7, 0xEFF00B1C, 0x0AFCEBCB, 0xF8E8EC0C);
	r0 = D(r0, s1_2_0, 0xE103EFFA, 0x8A13EC38, 0xFFFDD40F, 0xFFF5FF04);
	r1 = D(r1, s1_2_0, 0x0713FEFF, 0xFFF9F904, 0xD7CE27EE, 0x1419F805);
	r2 = D(r2, s1_2_0, 0x0A010BFC, 0x000CD907, 0x1DF70CDF, 0x18F717E1);
	r3 = D(r3, s1_2_0, 0x080400FC, 0x0411FBF4, 0xF7FD0CFE, 0xECE4FC29);
	r4 = D(r4, s1_2_0, 0xF40EEDFC, 0x0CFFF805, 0xFB031104, 0xFCFDF605);
	r5 = D(r5, s1_2_0, 0xA4CF0D28, 0xF605EC0D, 0xFE1C02FD, 0xFEFD0607);
	r6 = D(r6, s1_2_0, 0xFDF90E0D, 0x05F906EA, 0xFBFD0600, 0xF41BF712);
	r7 = D(r7, s1_2_0, 0x0D07F1F6, 0xF1000CFD, 0x06050500, 0xF3FCF3F4);
	r0 = D(r0, s1_2_1, 0x01D60FF3, 0xC00C98FE, 0x06F524F5, 0x00B6DD02);
	r1 = D(r1, s1_2_1, 0xEA09FDEA, 0xFE020105, 0xF0B14A07, 0x0A210618);
	r2 = D(r2, s1_2_1, 0xF9F20CFA, 0xF20CED0F, 0x080923B1, 0x18BA10F3);
	r3 = D(r3, s1_2_1, 0x06F7FFEA, 0x1FFF0609, 0xFFFD0E01, 0xA71F1BDD);
	r4 = D(r4, s1_2_1, 0x1220B3FB, 0xFBE0000A, 0xB281F80F, 0xDCDBF50A);
	r5 = D(r5, s1_2_1, 0xEAD3EAF9, 0x0025F70D, 0x231402E8, 0x12FDF905);
	r6 = D(r6, s1_2_1, 0xD55703EE, 0x070228F4, 0xF40417FE, 0xF4D8C915);
	r7 = D(r7, s1_2_1, 0x10ECF3DD, 0xDADF0BFC, 0x030B0F15, 0xF6232411);
	r0 = D(r0, s1_2_2, 0x0AF5F0F4, 0xF8F50C0B, 0x0502FCF5, 0x03F9FE01);
	r1 = D(r1, s1_2_2, 0xF9040A04, 0xFAF6FF03, 0xCEFD1525, 0x050600D1);
	r2 = D(r2, s1_2_2, 0xF50C0DF9, 0xF91BEF06, 0xFFC231E1, 0x07DE070F);
	r3 = D(r3, s1_2_2, 0x08FA0DF9, 0x1DE3041A, 0x01F9FE03, 0xFE2807E0);
	r4 = D(r4, s1_2_2, 0x1309FEF6, 0xFAE91B05, 0x13F21000, 0xFCD4F901);
	r5 = D(r5, s1_2_2, 0xCB012009, 0xFB04ED3C, 0x1BF82106, 0x06F101D8);
	r6 = D(r6, s1_2_2, 0x1D19F53E, 0x0EE41901, 0x01051004, 0xDB0E1820);
	r7 = D(r7, s1_2_2, 0x171507F3, 0x09150CF5, 0xE2EC042E, 0xF903D818);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_4x32_SOFT_vk] -conv3
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv2
//!BIND LUMA
//!SAVE conv3
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv2_pt;
			r = conv2_gather(p, 0);
			g = conv2_gather(p, 1);
			b = conv2_gather(p, 2);
			a = conv2_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w);
			vec4 v1 = vec4(r.z, g.z, b.z, a.z);
			vec4 v2 = vec4(r.x, g.x, b.x, a.x);
			vec4 v3 = vec4(r.y, g.y, b.y, a.y);
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv2_pt;
			r = conv2_gather(p, 0);
			g = conv2_gather(p, 1);
			b = conv2_gather(p, 2);
			a = conv2_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w);
			vec4 v5 = vec4(r.z, g.z, b.z, a.z);
			vec4 v6 = vec4(r.x, g.x, b.x, a.x);
			vec4 v7 = vec4(r.y, g.y, b.y, a.y);
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFFFFC602, 0xFCFDF306, 0xB502B0FC, 0x08F8EBFA);
	r1 = D(r1, s0_0_0, 0xFD15EBF7, 0x02FFFF02, 0xFE03FD04, 0xFFFCE906);
	r2 = D(r2, s0_0_0, 0x0E000206, 0xFD07FDE4, 0xF4FF0102, 0x0007DF05);
	r3 = D(r3, s0_0_0, 0x000203FD, 0xFC07FD05, 0xF400DF03, 0x01010204);
	r4 = D(r4, s0_0_0, 0xF3ECF4E9, 0x00010500, 0x01000001, 0xFD0FD6FF);
	r5 = D(r5, s0_0_0, 0x34098CC4, 0x00100D09, 0xE50301F7, 0x12FFDECA);
	r6 = D(r6, s0_0_0, 0x04FAFFFA, 0xD0DCC2F6, 0xEB02F7E9, 0x00010404);
	r7 = D(r7, s0_0_0, 0xFDD7D8FA, 0xFBFFFEE8, 0xFE04FD00, 0xF2FE3907);
	r0 = D(r0, s0_0_1, 0x06F5DEE2, 0xF603E70C, 0xB810DE07, 0x0BFE120D);
	r1 = D(r1, s0_0_1, 0xF9EEFACB, 0x03FF000A, 0xFDFFFC05, 0xFE0AFF0B);
	r2 = D(r2, s0_0_1, 0x08F7F8F4, 0x07F2DFF2, 0x0D0A03DF, 0x0103CED5);
	r3 = D(r3, s0_0_1, 0xFF0103FF, 0xFD0405EA, 0x0504F1E2, 0x00FF0308);
	r4 = D(r4, s0_0_1, 0xDA02F2FC, 0x070204FE, 0xFFFF0104, 0x2219E3E1);
	r5 = D(r5, s0_0_1, 0x23CFB581, 0xDDDBF1E7, 0xF00AF3EE, 0x2619ECE7);
	r6 = D(r6, s0_0_1, 0xF9BFCFEF, 0xCA03DDE7, 0xF802FC0B, 0x03FBFFFA);
	r7 = D(r7, s0_0_1, 0x14E18181, 0x0403F7EB, 0x06030200, 0xFEFE24FD);
	r0 = D(r0, s0_0_2, 0x0101D1FD, 0x07F8F3EC, 0xD40EB5D2, 0x0408FD03);
	r1 = D(r1, s0_0_2, 0xFD00E6FF, 0x0101FF02, 0x00FF0000, 0x05FAF701);
	r2 = D(r2, s0_0_2, 0x05050C07, 0xFC1910FB, 0x05F6FC04, 0xFCFDF1FA);
	r3 = D(r3, s0_0_2, 0x000006FC, 0xF9FA00FE, 0x03FDEBFA, 0x00000100);
	r4 = D(r4, s0_0_2, 0xFDECF109, 0x03FEFCFD, 0xFF000000, 0x0A17F7F8);
	r5 = D(r5, s0_0_2, 0x10091F05, 0x0304F806, 0x05FDF900, 0xFAE8E1F4);
	r6 = D(r6, s0_0_2, 0x02FBFCFB, 0xCC14E9E4, 0x03F9F705, 0x00030001);
	r7 = D(r7, s0_0_2, 0x0AEBB219, 0x0902F707, 0xFF00FE01, 0xEF010C19);
	r0 = D(r0, s0_1_0, 0x070BD7FD, 0xFAFFE009, 0xB6DFBBDA, 0xE609E8FC);
	r1 = D(r1, s0_1_0, 0x0C0DE2FE, 0x07FE01FF, 0xFF060304, 0xFEFDEF0C);
	r2 = D(r2, s0_1_0, 0x0500FDFE, 0xF41903F7, 0xDEF2EBFE, 0xF5F5F0EA);
	r3 = D(r3, s0_1_0, 0x01FE0100, 0x07070408, 0xF502F506, 0xF7FF00FF);
	r4 = D(r4, s0_1_0, 0xCE0EDBF6, 0x0400F800, 0xFD010104, 0x0F00EA0A);
	r5 = D(r5, s0_1_0, 0x5BFCE3EE, 0x1014E803, 0x01FE0109, 0x2BD6E0D6);
	r6 = D(r6, s0_1_0, 0xF7F7FDFB, 0xBDE5CE01, 0xD6FAF0E6, 0xD9FDEBFF);
	r7 = D(r7, s0_1_0, 0x14E90012, 0xF500FC04, 0xFF05F801, 0xE70A1A0D);
	r0 = D(r0, s0_1_1, 0xC8F508EC, 0x0AF4E0EF, 0xE421FAF2, 0xBB10E1AF);
	r1 = D(r1, s0_1_1, 0xD4DCFFE2, 0xFCEDFE01, 0xFEF9DAE1, 0x15F9F2E9);
	r2 = D(r2, s0_1_1, 0xFAF609F5, 0xD8310EF5, 0xD71603E1, 0xD402E9F2);
	r3 = D(r3, s0_1_1, 0x04FDFDFF, 0xD50009EE, 0xE5F4FCF6, 0x02FCFF04);
	r4 = D(r4, s0_1_1, 0xFE04F20F, 0xF5FEF9D1, 0xFF010304, 0xE2FFFDEE);
	r5 = D(r5, s0_1_1, 0xCDC5A0CC, 0xEAF115DD, 0xE404F7ED, 0xEAEBE302);
	r6 = D(r6, s0_1_1, 0xE581EF00, 0xD62EF4DC, 0x12DE0024, 0x09FAFBFF);
	r7 = D(r7, s0_1_1, 0xFA2819DB, 0xEF12FAFA, 0x14070C0D, 0xE02F1108);
	r0 = D(r0, s0_1_2, 0xF900E3FD, 0xE9F1DBFA, 0xCC01D0EC, 0xFEF4E500);
	r1 = D(r1, s0_1_2, 0x01FAF6F7, 0xFFFF0401, 0xFFFE04FA, 0x0CF8E701);
	r2 = D(r2, s0_1_2, 0x00FE0605, 0xFA0D0601, 0x09F5F900, 0xFDF4FB07);
	r3 = D(r3, s0_1_2, 0x01FF02FF, 0xF9FFFB05, 0x0206F7FA, 0x00000200);
	r4 = D(r4, s0_1_2, 0x011901FA, 0xF903FAF5, 0xFFFFFD00, 0xEFF6F900);
	r5 = D(r5, s0_1_2, 0x10FBFD0E, 0xFADFE4E9, 0x01FCF6FD, 0x0BF6EAFA);
	r6 = D(r6, s0_1_2, 0x0804EAFE, 0xEC3519A0, 0x04EFFAF4, 0x0206F604);
	r7 = D(r7, s0_1_2, 0x14ECE41B, 0xF605FAFE, 0x07040DF7, 0xDB16E1E9);
	r0 = D(r0, s0_2_0, 0x0005C7FF, 0x0318E601, 0xF4DFE6CE, 0x0406FB05);
	r1 = D(r1, s0_2_0, 0x060EF504, 0xFE010400, 0x0310FB04, 0xDEF7ED01);
	r2 = D(r2, s0_2_0, 0xFEFFFD02, 0x06050DFF, 0xFC01ED05, 0xB8FAEE00);
	r3 = D(r3, s0_2_0, 0xFF000000, 0x08FFFD04, 0xFBFCF003, 0x01000303);
	r4 = D(r4, s0_2_0, 0x1000F300, 0xEA09E802, 0x000300FD, 0xE80EDF03);
	r5 = D(r5, s0_2_0, 0x25F2EF04, 0xF3F31100, 0x0D0EF8FA, 0x22D7C3F4);
	r6 = D(r6, s0_2_0, 0xFFFAE801, 0xE0F6DCEF, 0x0D09F101, 0x000107FE);
	r7 = D(r7, s0_2_0, 0xEEE2E5F9, 0x030B00FE, 0x000600FD, 0xEB111900);
	r0 = D(r0, s0_2_1, 0x0A08D8F8, 0xE9C7DAE5, 0xD3EFF7EE, 0xEA050406);
	r1 = D(r1, s0_2_1, 0xF7E8FEED, 0x02FF0301, 0x058108EA, 0xDB07E209);
	r2 = D(r2, s0_2_1, 0xFF01FF00, 0xEFE8EFF3, 0xF905E2FC, 0xDC18F9E4);
	r3 = D(r3, s0_2_1, 0x010103FF, 0x00FFF00B, 0x0501FEFF, 0xFF000200);
	r4 = D(r4, s0_2_1, 0x07F8FA00, 0xC200FA1A, 0x010303FB, 0xEC0AE7FB);
	r5 = D(r5, s0_2_1, 0xF3FB170D, 0x120D0105, 0x0B040607, 0x17E9E2F4);
	r6 = D(r6, s0_2_1, 0x02F8EAFB, 0xCE06DCAD, 0x00EEF902, 0x01040802);
	r7 = D(r7, s0_2_1, 0xFADAE0FB, 0xFD0202F8, 0x00F800FE, 0xF929191B);
	r0 = D(r0, s0_2_2, 0x0602D4FC, 0xF2FAD2F5, 0xD919BCDD, 0x0117F104);
	r1 = D(r1, s0_2_2, 0xFB08DB00, 0x01010202, 0x0103F0FE, 0xFAF4EAF6);
	r2 = D(r2, s0_2_2, 0xFF010204, 0xE9EAF8FB, 0x05FB0B03, 0x05FD0B06);
	r3 = D(r3, s0_2_2, 0x0001FE00, 0x0204FF04, 0x0002F700, 0x0000FF01);
	r4 = D(r4, s0_2_2, 0x04FFF402, 0xF9030004, 0x02FBFD00, 0x0702D7FC);
	r5 = D(r5, s0_2_2, 0x010C0202, 0x03F6FBF6, 0x03FF05FF, 0x11EFF7F7);
	r6 = D(r6, s0_2_2, 0x0200E400, 0xEAE9C890, 0x05F7D701, 0x0000D701);
	r7 = D(r7, s0_2_2, 0xFBE1C712, 0xFCFBFEFE, 0x0703E500, 0xF3EB3507);
	r0 = D(r0, s1_0_0, 0x00EAFD04, 0x01FEF7FE, 0x01F4EC16, 0x02FB0401);
	r1 = D(r1, s1_0_0, 0x0211F601, 0x00FF0202, 0xFB03FD00, 0x010AFB09);
	r2 = D(r2, s1_0_0, 0x00FAFAFF, 0xFEEAFD05, 0xE804FE02, 0x0804FE01);
	r3 = D(r3, s1_0_0, 0xFDFFFF02, 0xFDFFFF03, 0xFFFB0001, 0x000000FF);
	r4 = D(r4, s1_0_0, 0xF909FCFB, 0xF9020002, 0xFEFFFF01, 0xF103FBFD);
	r5 = D(r5, s1_0_0, 0x1CF7030A, 0xFEE809E5, 0xE8FF0700, 0xF0D10A06);
	r6 = D(r6, s1_0_0, 0xFD0105FF, 0x05E00610, 0xF0170306, 0xEF03F9F8);
	r7 = D(r7, s1_0_0, 0xE8CA0505, 0xF70107F4, 0xFEFFFDFE, 0xFD0C0F0B);
	r0 = D(r0, s1_0_1, 0xFC00FE00, 0xFB10FD0B, 0x0BFB00F8, 0x07EE010B);
	r1 = D(r1, s1_0_1, 0xE1E50007, 0x03FF0001, 0x0101FF01, 0xF80F0608);
	r2 = D(r2, s1_0_1, 0xFCFAF30B, 0xF6F8F6FB, 0x01F104F6, 0x0408F80E);
	r3 = D(r3, s1_0_1, 0x0303FD03, 0xF3050103, 0xFE03FF09, 0x02000AFF);
	r4 = D(r4, s1_0_1, 0xEE0FE808, 0x05070100, 0xFE010101, 0x1BFDF4FC);
	r5 = D(r5, s1_0_1, 0x160A23E8, 0xEAD413F9, 0x00FC0303, 0xC4EDFAE1);
	r6 = D(r6, s1_0_1, 0xF6F11413, 0xFA0D00E7, 0x00FF0D09, 0xFCFF13FD);
	r7 = D(r7, s1_0_1, 0xEAFBD620, 0x04F800FE, 0x00FF0202, 0x03FB120C);
	r0 = D(r0, s1_0_2, 0xFFE404F9, 0xFB070203, 0xDB3013EB, 0x0203040B);
	r1 = D(r1, s1_0_2, 0xFF03EF05, 0x00000204, 0x000207F9, 0x08000203);
	r2 = D(r2, s1_0_2, 0x0000E303, 0xECF9FCFB, 0xF405EBF2, 0xF90209F0);
	r3 = D(r3, s1_0_2, 0xFE00FBFD, 0x00FF0502, 0x06F301FF, 0x0001FFFF);
	r4 = D(r4, s1_0_2, 0xFFF500F7, 0xFE0103FC, 0xFF00FE02, 0xFAF0F1FF);
	r5 = D(r5, s1_0_2, 0xF4E90DD1, 0x11EEFBF4, 0x09FC0AF6, 0x1DE311F6);
	r6 = D(r6, s1_0_2, 0x00FD0201, 0xF508E3DA, 0xF902FFF7, 0xF802EC03);
	r7 = D(r7, s1_0_2, 0xEC8118D1, 0xFBFBF9FD, 0x020404FE, 0xEF190B04);
	r0 = D(r0, s1_1_0, 0x02FEFB02, 0xFE1FFDF7, 0xDD05EE0B, 0x00EE0202);
	r1 = D(r1, s1_1_0, 0x0E08F3FD, 0xFEFC0200, 0x0006FFFE, 0x07FD0C09);
	r2 = D(r2, s1_1_0, 0xFFFF0203, 0xE512FB03, 0xED100CFB, 0x0A0011F8);
	r3 = D(r3, s1_1_0, 0xFE02FF00, 0xFCF80107, 0x04F9FB03, 0x01FD0502);
	r4 = D(r4, s1_1_0, 0x02EBFB02, 0x02FCFC0A, 0xFF01FE01, 0xFFFCFA13);
	r5 = D(r5, s1_1_0, 0xF20608F9, 0xFA02F8EF, 0x05F5F6FE, 0x00C90009);
	r6 = D(r6, s1_1_0, 0xFAFF00FC, 0xE912F808, 0x02EE0807, 0xEE16FBF9);
	r7 = D(r7, s1_1_0, 0x0ED90014, 0x010AFBFF, 0x02FFFCFE, 0x0EF803F4);
	r0 = D(r0, s1_1_1, 0xF5FF2FFA, 0x0CF9FE07, 0xDCF51AFC, 0x03E9EF00);
	r1 = D(r1, s1_1_1, 0xF0F908ED, 0xFFFDADFA, 0x02FF04FF, 0x0AFD1009);
	r2 = D(r2, s1_1_1, 0xF9F10FFE, 0xDAE0070A, 0xFAF92B00, 0xFA20EFFA);
	r3 = D(r3, s1_1_1, 0xFF00FE07, 0xFBF40CFE, 0x08EF120E, 0x03005204);
	r4 = D(r4, s1_1_1, 0xFFF23FF8, 0xFEFBFA0F, 0xFF0501FB, 0xD2EDF7FF);
	r5 = D(r5, s1_1_1, 0xC021B5C0, 0x08FE07CB, 0x03FAFEF7, 0xF60BD8D5);
	r6 = D(r6, s1_1_1, 0xF904D90D, 0xD04BFF08, 0xF5F924D9, 0x00ED48E8);
	r7 = D(r7, s1_1_1, 0xF53D8116, 0xEFFEDE0B, 0xF010F505, 0x03DEF8DE);
	r0 = D(r0, s1_1_2, 0xFAEE01FA, 0xF402F9FD, 0xF1E8D9DF, 0x05F804F4);
	r1 = D(r1, s1_1_2, 0x08F21718, 0x00FEFC05, 0xF8FC0BEE, 0xFF070712);
	r2 = D(r2, s1_1_2, 0x02001108, 0x03FDF702, 0x090606C1, 0x08F81EEE);
	r3 = D(r3, s1_1_2, 0x0100FAFF, 0x02FE0A0B, 0x04F91D02, 0x03FE0501);
	r4 = D(r4, s1_1_2, 0xF705EFFD, 0xF603F40C, 0x02FE0906, 0xF7181206);
	r5 = D(r5, s1_1_2, 0x00C5FECD, 0xECFB1213, 0x0000F6FC, 0xFAF00BA0);
	r6 = D(r6, s1_1_2, 0x05F605F5, 0xDB0502AE, 0x02080112, 0xFD07F10D);
	r7 = D(r7, s1_1_2, 0xE9DA17CB, 0xFFF523EE, 0x0609F107, 0xFA16F6FB);
	r0 = D(r0, s1_2_0, 0x08D9FB01, 0x1506FCE9, 0x0A0CEA08, 0x00FEF6FF);
	r1 = D(r1, s1_2_0, 0x010BF40A, 0x00010202, 0xFA0AFF0A, 0x0812F5FD);
	r2 = D(r2, s1_2_0, 0xFC02FDFE, 0x0904F60E, 0xFAEBF707, 0xE91C02FB);
	r3 = D(r3, s1_2_0, 0x000100FF, 0xFAFCFBFD, 0xFEFDFF01, 0xFF0002FF);
	r4 = D(r4, s1_2_0, 0x06FB05F5, 0xF9FBFB06, 0xFE010200, 0xF2080106);
	r5 = D(r5, s1_2_0, 0x0CE2F4FB, 0x01160D01, 0xFCFD03FD, 0xF5BBF1FA);
	r6 = D(r6, s1_2_0, 0x02FAFF02, 0xF9EBF4F6, 0x04000AFF, 0xFE01FAFB);
	r7 = D(r7, s1_2_0, 0x06E502FE, 0xFFF3F5FE, 0xFF0300FE, 0xDB0F00E3);
	r0 = D(r0, s1_2_1, 0xFEE8FFEB, 0xE2F210ED, 0xEB0BFAF4, 0x0504FEF7);
	r1 = D(r1, s1_2_1, 0xFCF312F8, 0x0201FDFE, 0xE1E281E4, 0xFD00FEF8);
	r2 = D(r2, s1_2_1, 0xFEFDFE00, 0xFC0BFF0C, 0x03150508, 0x100C1604);
	r3 = D(r3, s1_2_1, 0xFF01FDFF, 0xFFFFF7FF, 0x080B0400, 0x010009FF);
	r4 = D(r4, s1_2_1, 0xF302EBFA, 0xE90CFC04, 0xFEFE00FE, 0xF5110F02);
	r5 = D(r5, s1_2_1, 0xFBF8E2DB, 0x0CE705DD, 0x02F1FEFA, 0xEEF8E2F0);
	r6 = D(r6, s1_2_1, 0x03FDFF0A, 0xFCF60DE9, 0xF40EEF09, 0x01FF05F2);
	r7 = D(r7, s1_2_1, 0x0005F504, 0x0207FF05, 0x01020AFE, 0xFFF00208);
	r0 = D(r0, s1_2_2, 0xF9F708F4, 0x020A0808, 0xFEE410F1, 0xF9FEF5F5);
	r1 = D(r1, s1_2_2, 0xFAFCF213, 0xFF0101FE, 0x06FF00F2, 0x0508F4E6);
	r2 = D(r2, s1_2_2, 0xFE00FBFE, 0xEA05F6F6, 0x04F717E9, 0x05F9F5E1);
	r3 = D(r3, s1_2_2, 0xFF00FF00, 0xFEFEFCFB, 0xFFFBFFFC, 0xFF0000FB);
	r4 = D(r4, s1_2_2, 0xFEFB020D, 0xF802FBFC, 0xFEFE0406, 0x0100FDF6);
	r5 = D(r5, s1_2_2, 0xFBF211EF, 0xFD09F8F4, 0xF6FE02F7, 0x0BDA08EB);
	r6 = D(r6, s1_2_2, 0xFC04FA02, 0xEBEDCBED, 0x02E70106, 0xFF01F90E);
	r7 = D(r7, s1_2_2, 0xF8EBF3F8, 0xF700F6F5, 0x01FF0411, 0x0503C708);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x02FE0006, 0x0B09F803, 0x07080A09, 0x0AFF0B00);
	r1 = D(r1, s0_0_0, 0x11E40503, 0xFD050100, 0x0401FC00, 0xFFF90405);
	r2 = D(r2, s0_0_0, 0x03FC00FA, 0x06E10807, 0x01FD0008, 0x03FFFBFA);
	r3 = D(r3, s0_0_0, 0xFD01FFFF, 0xFA01FD00, 0x00FFF707, 0xFD020001);
	r4 = D(r4, s0_0_0, 0xFEF0F102, 0xFDFFFE00, 0x00020100, 0x0A04C800);
	r5 = D(r5, s0_0_0, 0x0BFE27E5, 0xE7F0FFEF, 0x0BF50C02, 0xF5000A0B);
	r6 = D(r6, s0_0_0, 0xFDF900FE, 0xF00E040F, 0xF8E5FC06, 0x01F1F603);
	r7 = D(r7, s0_0_0, 0xFDF12C10, 0x04F504FF, 0x03FEFC01, 0xF60BFEEB);
	r0 = D(r0, s0_0_1, 0xFE02FD02, 0x01E6F0F8, 0xDF2EF500, 0x0810FBFB);
	r1 = D(r1, s0_0_1, 0xE1EC0D06, 0x02FBFC02, 0xFEFE02FF, 0x01E51A07);
	r2 = D(r2, s0_0_1, 0xFE0AF005, 0xF20FE4FC, 0xE3F703F7, 0x1006FF03);
	r3 = D(r3, s0_0_1, 0x02F70505, 0x04F008FA, 0xFBF0FE07, 0xFF05FCFF);
	r4 = D(r4, s0_0_1, 0xFBF21A02, 0xFE07FAFF, 0x00FE00FF, 0x030CDAF4);
	r5 = D(r5, s0_0_1, 0x000DDFEB, 0x0102F906, 0xFBEB1009, 0xEA04F123);
	r6 = D(r6, s0_0_1, 0x03F001F9, 0xF922FC00, 0xF6060EFC, 0xF121FBFC);
	r7 = D(r7, s0_0_1, 0xEBFE370C, 0xE90808F5, 0xF80200FE, 0x392EDCD6);
	r0 = D(r0, s0_0_2, 0xF30EFB08, 0xFFF6EFF3, 0xBD1503E8, 0xFA0FF7FC);
	r1 = D(r1, s0_0_2, 0x09FFFF03, 0xFEFEFDFE, 0x0700FFFA, 0x06F50E07);
	r2 = D(r2, s0_0_2, 0xFCF9F9F7, 0xC414FF0C, 0xD70603FA, 0xEFF6FCFF);
	r3 = D(r3, s0_0_2, 0xFC040300, 0xFDF20807, 0xF804050C, 0x0100FDFF);
	r4 = D(r4, s0_0_2, 0x010A0401, 0xFA0301FD, 0x00030201, 0xE41CE2F7);
	r5 = D(r5, s0_0_2, 0x0AF6F1FA, 0x02FB0202, 0xFFF3FD03, 0x0CE81514);
	r6 = D(r6, s0_0_2, 0x0505050B, 0xD90A09FA, 0x0DF40200, 0x04EE0400);
	r7 = D(r7, s0_0_2, 0x05D0FE13, 0xD904F600, 0xFE0DFFFB, 0xDCE5F6DF);
	r0 = D(r0, s0_1_0, 0xEF04F90F, 0x18B6F104, 0x02E80319, 0xF702FDF7);
	r1 = D(r1, s0_1_0, 0xFAD8D33B, 0x02FF0103, 0x03FAFAFE, 0xF9FD05FA);
	r2 = D(r2, s0_1_0, 0xFE01FE08, 0x02BE0504, 0x29EEEEEF, 0xF40AB9F3);
	r3 = D(r3, s0_1_0, 0x0102FEFD, 0xF9FCFD04, 0xFE08FC0E, 0x03FD01FE);
	r4 = D(r4, s0_1_0, 0x0716CBF5, 0x0206FEFE, 0xFE01FEFF, 0xF40EE505);
	r5 = D(r5, s0_1_0, 0xE01EFB15, 0xB8FBF7FD, 0xE7F50BE7, 0x1BC616E3);
	r6 = D(r6, s0_1_0, 0x00E7F60C, 0x0AFC0607, 0x0708E4E9, 0x00D2F5ED);
	r7 = D(r7, s0_1_0, 0xE8190207, 0x08F114F9, 0xFA0AFB09, 0xE7E411F1);
	r0 = D(r0, s0_1_1, 0x13FD0CD8, 0xEF0CE4FC, 0xF4E5DEF4, 0xEB0DFCEA);
	r1 = D(r1, s0_1_1, 0x00F0FBD5, 0x02010204, 0xFB00FEF6, 0xE60707F9);
	r2 = D(r2, s0_1_1, 0x03FAF606, 0xBED208DD, 0xD1D8F3C1, 0x0AD2EEF1);
	r3 = D(r3, s0_1_1, 0x02FFFD14, 0xFE0FF9C7, 0x0404EBCD, 0x04F9030F);
	r4 = D(r4, s0_1_1, 0xFCFFE2EF, 0xF0060101, 0xFA020101, 0xEBE4FFE7);
	r5 = D(r5, s0_1_1, 0x060C1781, 0xDEF7F7C3, 0xF908E6DF, 0xFA0EEE85);
	r6 = D(r6, s0_1_1, 0xF314E5F0, 0xDCF9ECF3, 0x05E0FF1F, 0xF511F928);
	r7 = D(r7, s0_1_1, 0xF323A3D4, 0xF1F101EB, 0xF9E30100, 0x0AF0C6F8);
	r0 = D(r0, s0_1_2, 0xF5000FFE, 0x15E6E0E7, 0xD208160B, 0xF6FF0C02);
	r1 = D(r1, s0_1_2, 0x010FD7FE, 0xFF0004FF, 0x03FA0501, 0xF503E6F6);
	r2 = D(r2, s0_1_2, 0x00FE0405, 0xF6E5190B, 0xEE1DEF12, 0x01FEECF6);
	r3 = D(r3, s0_1_2, 0x000001FE, 0xFBFDEC02, 0xFFFEFC06, 0xFFFF00FE);
	r4 = D(r4, s0_1_2, 0x0B06E301, 0x00FFF9F8, 0x05FFFF03, 0x09EAF8EB);
	r5 = D(r5, s0_1_2, 0xF7F8F609, 0x03E0FBF5, 0x08F0080C, 0x09FBECEC);
	r6 = D(r6, s0_1_2, 0x030A0910, 0xEEBFC7DD, 0x000B0604, 0x03FEFFF5);
	r7 = D(r7, s0_1_2, 0x1900FFD9, 0x02FC1703, 0x02F0100B, 0x04093909);
	r0 = D(r0, s0_2_0, 0x0500070C, 0xFB06FB03, 0x23E43110, 0xE5EFFD06);
	r1 = D(r1, s0_2_0, 0xF2F8FA08, 0x01FFFEFC, 0xF702F2FC, 0xF5EC05F8);
	r2 = D(r2, s0_2_0, 0xFE020201, 0x0A030F19, 0x0CE8050B, 0x1FCCF6ED);
	r3 = D(r3, s0_2_0, 0xFF00FFFE, 0xFE00FE03, 0x00F5FCFD, 0x030100FC);
	r4 = D(r4, s0_2_0, 0xF6F3F109, 0xFEF8FC0F, 0x0305FD02, 0x0702F60D);
	r5 = D(r5, s0_2_0, 0xEBFD0F12, 0xF30E05F6, 0xFCF3F300, 0x10201500);
	r6 = D(r6, s0_2_0, 0x04F2F2F8, 0x11F40B05, 0xF6F4F8FF, 0xF8EC04FF);
	r7 = D(r7, s0_2_0, 0x0BF20515, 0xFAF5FB0C, 0xFE03FC01, 0x2B0FFBFE);
	r0 = D(r0, s0_2_1, 0x0100FC01, 0x1AD6ECD7, 0x13EED6E3, 0xFAEE1711);
	r1 = D(r1, s0_2_1, 0x09E7FE02, 0xFD0000FE, 0x0101F9EF, 0xEF05EAEA);
	r2 = D(r2, s0_2_1, 0xFDFCFC01, 0x13110E00, 0xE9FBE7FB, 0xE102D3D3);
	r3 = D(r3, s0_2_1, 0xFF0201FD, 0xFEFAF912, 0xFBEEF904, 0xFFFFFAF9);
	r4 = D(r4, s0_2_1, 0xFF0414FE, 0x1104E6DF, 0x03050004, 0x1610EBEF);
	r5 = D(r5, s0_2_1, 0x0EFF0F06, 0xED1601E5, 0xE3F91105, 0xEAF112E9);
	r6 = D(r6, s0_2_1, 0xF7F8F311, 0x1CF3D9ED, 0x08112EFB, 0x000CFE07);
	r7 = D(r7, s0_2_1, 0xE0E9130E, 0x03FE19F7, 0xFD090BE8, 0xDED00509);
	r0 = D(r0, s0_2_2, 0x0401F6FB, 0x0005CDEF, 0x25F809E5, 0xFA02F709);
	r1 = D(r1, s0_2_2, 0x0605C00F, 0xFFFFFD02, 0x0B06ED0C, 0xFB01FAF4);
	r2 = D(r2, s0_2_2, 0xFF000003, 0x0E03DBFF, 0x01080EF6, 0x00F709F6);
	r3 = D(r3, s0_2_2, 0x00FFFE01, 0xFD010809, 0x01FD03FD, 0xFFFF00FE);
	r4 = D(r4, s0_2_2, 0x0508EA00, 0x0402EEFE, 0x00FFFA0A, 0xFAF9CE0F);
	r5 = D(r5, s0_2_2, 0xFEF9DDEE, 0xF6EBF6FE, 0xFB010701, 0x0100FBF8);
	r6 = D(r6, s0_2_2, 0x06080F08, 0x0F0ACC8B, 0x0105DB11, 0x00FE0003);
	r7 = D(r7, s0_2_2, 0x02071D02, 0x06FD02F6, 0xFD04DEF3, 0x0420E2F9);
	r0 = D(r0, s1_0_0, 0x07FDF9F8, 0x04FCF301, 0xF4F3F711, 0xFA01F3FD);
	r1 = D(r1, s1_0_0, 0x02FBFDFD, 0x08000002, 0xFDFD0002, 0xFFFFFEF5);
	r2 = D(r2, s1_0_0, 0xFAFD03FC, 0x12FB0204, 0xEFFF01F9, 0x07FDF5FB);
	r3 = D(r3, s1_0_0, 0xFEFFFBFD, 0x00040102, 0xF70101F9, 0xFE030200);
	r4 = D(r4, s1_0_0, 0xD9FDF3FD, 0xF9FEFF00, 0x03FF0000, 0xF0FEF304);
	r5 = D(r5, s1_0_0, 0xF40CB9F0, 0x02F9F80B, 0xF7030CFE, 0x39F6FBF3);
	r6 = D(r6, s1_0_0, 0x09F8FE00, 0x10F1F301, 0x020508F8, 0xEFFBFE01);
	r7 = D(r7, s1_0_0, 0xE3FA01F8, 0x03080301, 0x05010201, 0x02F20301);
	r0 = D(r0, s1_0_1, 0xF401070A, 0x09050E03, 0xF70EEBEF, 0x1304E40B);
	r1 = D(r1, s1_0_1, 0xEC160BF9, 0xFC0CFE01, 0x040405FF, 0xF6F6FFEC);
	r2 = D(r2, s1_0_1, 0xFEEBFC06, 0xFDF4EA0F, 0xF6FD040C, 0x03F7030F);
	r3 = D(r3, s1_0_1, 0xF80EFDFD, 0xEA0B0804, 0x000107F8, 0x02FA0203);
	r4 = D(r4, s1_0_1, 0xF0FF0EFD, 0xF703FFFF, 0x02FE0102, 0xF4FCEE0A);
	r5 = D(r5, s1_0_1, 0xF3D7D90D, 0xF01309F7, 0xFBEE02FD, 0x0B0EF8FA);
	r6 = D(r6, s1_0_1, 0xF717FEF8, 0x07FDE512, 0xEFFAFA03, 0xF9F9FC00);
	r7 = D(r7, s1_0_1, 0xD606CCF2, 0x0F09020F, 0x0501F900, 0x16F6FF19);
	r0 = D(r0, s1_0_2, 0x04000403, 0x0808080C, 0xE20605EA, 0xF307F6FE);
	r1 = D(r1, s1_0_2, 0x0D190401, 0xFC0202FF, 0xFA02FC02, 0x00FEFAFC);
	r2 = D(r2, s1_0_2, 0xFB0E0504, 0xECF00AFA, 0x060FFD00, 0xFDFA06F9);
	r3 = D(r3, s1_0_2, 0x06F7FF02, 0xFEF7FCFD, 0x03FDFFFB, 0xFF0301FF);
	r4 = D(r4, s1_0_2, 0xF6F50004, 0xFA01FEFF, 0xFEFEFF00, 0xECF0F80E);
	r5 = D(r5, s1_0_2, 0x15D1ED04, 0x06FAF7FB, 0xFEF2FA00, 0x14E8F5F1);
	r6 = D(r6, s1_0_2, 0xFAFFF604, 0x10E9030A, 0xFC00FD05, 0x02000201);
	r7 = D(r7, s1_0_2, 0xDFE2CF09, 0xF401F700, 0xFB02FF03, 0xD4EF0D06);
	r0 = D(r0, s1_1_0, 0x0100F907, 0xF4FCF3FF, 0xE9FAF317, 0x07FD1602);
	r1 = D(r1, s1_1_0, 0x0CEE07FC, 0xFEFB01FA, 0x0705FB01, 0xF7F80CFF);
	r2 = D(r2, s1_1_0, 0xFEFBFAFB, 0x0D06FEFC, 0x0DFEE9ED, 0x0801F201);
	r3 = D(r3, s1_1_0, 0x01FD0005, 0x04FDFB06, 0x08FDFB00, 0x0102FDFE);
	r4 = D(r4, s1_1_0, 0x0BF3F301, 0xF4F60306, 0xFFFFFE02, 0xF9F00512);
	r5 = D(r5, s1_1_0, 0xAFF9EBF3, 0xEB12FA0D, 0x16FA050F, 0xE614D50A);
	r6 = D(r6, s1_1_0, 0x0AEBF804, 0xFEF8E3FC, 0x10050519, 0xF703F4F6);
	r7 = D(r7, s1_1_0, 0xF502D603, 0x0802FFF8, 0x06FCFD04, 0xF10A04F2);
	r0 = D(r0, s1_1_1, 0x0FFC140F, 0xF1EF1811, 0xFDFF16F4, 0xED171AE6);
	r1 = D(r1, s1_1_1, 0x09330BF4, 0x0A53FE02, 0xEE06080C, 0x04F2010C);
	r2 = D(r2, s1_1_1, 0x120C0011, 0xEB0705EB, 0xF8091F10, 0xFEFD13FA);
	r3 = D(r3, s1_1_1, 0xFBF4FE1A, 0x110C0D2E, 0x11F40D1B, 0x07F4FF0E);
	r4 = D(r4, s1_1_1, 0xF6E4FF10, 0x09E9140D, 0x04FCFCFF, 0xDD05FB08);
	r5 = D(r5, s1_1_1, 0xF503E9FC, 0x0FF0E805, 0xFD3A07FC, 0x10D1E345);
	r6 = D(r6, s1_1_1, 0x014205FB, 0x1EF3FD23, 0xF9F8E500, 0xEDDF00F1);
	r7 = D(r7, s1_1_1, 0xC11DC409, 0xF405FDFF, 0xF213E8F2, 0xF4040DFF);
	r0 = D(r0, s1_1_2, 0x052A070C, 0x0E0F0EF6, 0xFEE9F70C, 0xEDE2FC0A);
	r1 = D(r1, s1_1_2, 0x080601FA, 0x03050201, 0xFEFDFFFF, 0xFAFCFB04);
	r2 = D(r2, s1_1_2, 0x03F500FF, 0x02E80916, 0xFF03E4F7, 0x04F1FAFD);
	r3 = D(r3, s1_1_2, 0xFF05FD01, 0x00260402, 0x03EDF602, 0x00FA02FE);
	r4 = D(r4, s1_1_2, 0xFF050504, 0xFEFA0809, 0x0003FD00, 0xFC0B0E01);
	r5 = D(r5, s1_1_2, 0x0CC7011D, 0x0A0A0EEF, 0xFFF7FDFB, 0x02FBEC06);
	r6 = D(r6, s1_1_2, 0xFDDBF204, 0xFAE704ED, 0x050901F2, 0x020A0406);
	r7 = D(r7, s1_1_2, 0xDEC8BC27, 0xF8F2FC07, 0x05D9FCF8, 0xF00205F8);
	r0 = D(r0, s1_2_0, 0x0305F80E, 0x0408F902, 0xEDFFDC00, 0xF102F90A);
	r1 = D(r1, s1_2_0, 0x0CFCF60B, 0x010003FD, 0xF5F70402, 0xFDFFFE14);
	r2 = D(r2, s1_2_0, 0x02010203, 0x060301FF, 0xFCFEF703, 0xF707F7EC);
	r3 = D(r3, s1_2_0, 0x00000000, 0x0104FC09, 0x00FDFF07, 0x04020101);
	r4 = D(r4, s1_2_0, 0xF204FB07, 0x0602F209, 0x000400FE, 0x0A04FB06);
	r5 = D(r5, s1_2_0, 0xF70AF80F, 0xF305ED01, 0xF001F7FE, 0xEB08D10E);
	r6 = D(r6, s1_2_0, 0x0D07080D, 0x0A06E125, 0xFF0B02F6, 0x01FF02FD);
	r7 = D(r7, s1_2_0, 0xF7FC170B, 0xFE03FF07, 0x08FE0506, 0x090E07FE);
	r0 = D(r0, s1_2_1, 0xFE0CFC08, 0xF2E3090F, 0xE409E344, 0x06D9FB14);
	r1 = D(r1, s1_2_1, 0x07FD0B06, 0x030100FE, 0x07250306, 0xF70C0C09);
	r2 = D(r2, s1_2_1, 0x03FFFE05, 0x12F8EE03, 0xFAF8FC13, 0x09E8010C);
	r3 = D(r3, s1_2_1, 0x00FFFF00, 0xFEFFFD05, 0xFDF60002, 0x04FB00FB);
	r4 = D(r4, s1_2_1, 0xF40CFEFB, 0x0703EF09, 0x0507FC04, 0x0DFDFC0E);
	r5 = D(r5, s1_2_1, 0xF620E633, 0x0AFE09EC, 0xFDEFFD04, 0xF10BDB1B);
	r6 = D(r6, s1_2_1, 0xF705FCFC, 0x0F07D51D, 0xF607F302, 0xFE0C0203);
	r7 = D(r7, s1_2_1, 0xF60AE207, 0xFEF7FC05, 0x0101F402, 0x08E923FF);
	r0 = D(r0, s1_2_2, 0x00FCF504, 0x0304F7FE, 0xD7E5E31E, 0xFDF5040A);
	r1 = D(r1, s1_2_2, 0xFE03FE10, 0x01020100, 0xF9F6F9FB, 0xFBF9FE14);
	r2 = D(r2, s1_2_2, 0x01FF0202, 0x19FDF7F9, 0x05F907F4, 0x050D020C);
	r3 = D(r3, s1_2_2, 0x00020000, 0x050AFF08, 0xF6FAFD02, 0x00FF02FF);
	r4 = D(r4, s1_2_2, 0xF903F800, 0x0CD8F7FD, 0xFFF4FC03, 0x06FBFB00);
	r5 = D(r5, s1_2_2, 0xECEB0117, 0x031C0F03, 0x010707FF, 0xEDF9F308);
	r6 = D(r6, s1_2_2, 0xFB00FB04, 0x0125D640, 0x02F6F808, 0xFFFFFD03);
	r7 = D(r7, s1_2_2, 0xF301ED20, 0xF9FC0101, 0x0E01F802, 0x081514F0);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x020F0302, 0xFCFFFEF8, 0xEBF5DC11, 0xFCFBF9F3);
	r1 = D(r1, s0_0_0, 0xF7FCFAEA, 0xF9030000, 0x01FF02F8, 0xFF0AFD01);
	r2 = D(r2, s0_0_0, 0xFBFD0005, 0x04D5E0FE, 0x1F02EF1A, 0xF6F60FFE);
	r3 = D(r3, s0_0_0, 0x06FEFF04, 0xFC000000, 0x0500FD07, 0xFC01020A);
	r4 = D(r4, s0_0_0, 0x0708F703, 0xFD010103, 0x04FFFE02, 0x010E1107);
	r5 = D(r5, s0_0_0, 0xDCF92BCE, 0xEBBE9FF6, 0xFF11090E, 0x040703D8);
	r6 = D(r6, s0_0_0, 0xE7E9FAF9, 0xF10AFC0D, 0xEF05F7FC, 0xF7FFFB07);
	r7 = D(r7, s0_0_0, 0x270F09F0, 0xFD0401F9, 0xFCFC02FB, 0xE5E11205);
	r0 = D(r0, s0_0_1, 0x0FF5EB04, 0xEE06FEF0, 0xFFEBCF1E, 0xFBFDF0E8);
	r1 = D(r1, s0_0_1, 0x08EBF4FB, 0x05FCFE05, 0xFFFEFDF8, 0x0A0EFE02);
	r2 = D(r2, s0_0_1, 0x81040EFF, 0x0EE5E014, 0xE3E9D713, 0x08FFFDE7);
	r3 = D(r3, s0_0_1, 0x3F070C00, 0x0E0B0000, 0x12090309, 0x01FDFF07);
	r4 = D(r4, s0_0_1, 0x0C120906, 0xFFFF0300, 0x0202FF03, 0xF8FB0111);
	r5 = D(r5, s0_0_1, 0x93F817CD, 0x0815F014, 0x040AF703, 0xC801A9D6);
	r6 = D(r6, s0_0_1, 0x0A02F5F7, 0x1DFFDA1D, 0x00F30408, 0xF2F9FE0A);
	r7 = D(r7, s0_0_1, 0xD5F8FBE9, 0xEAF4EC18, 0xFFFCFFFD, 0xEFF2FAF6);
	r0 = D(r0, s0_0_2, 0x0604F506, 0x0808EDF3, 0xF8FC810D, 0xFBFF04FA);
	r1 = D(r1, s0_0_2, 0xF60D0202, 0xFFFE01FF, 0x00FFFD02, 0x040506FF);
	r2 = D(r2, s0_0_2, 0xFC00FEFA, 0xF60A120A, 0xFA020AF5, 0x0C05EBFF);
	r3 = D(r3, s0_0_2, 0x0101FEFF, 0xFE010607, 0x0006FD05, 0xFFFFFE00);
	r4 = D(r4, s0_0_2, 0x020A040D, 0x01FC0502, 0x01FFFD00, 0xF0D4DFF2);
	r5 = D(r5, s0_0_2, 0x07F21318, 0x07F70804, 0xFD020806, 0xFCF7F026);
	r6 = D(r6, s0_0_2, 0xFEFD0206, 0xD8ADCCF8, 0x000703FE, 0x020603FB);
	r7 = D(r7, s0_0_2, 0xF4EC3E08, 0xF8050207, 0xF7FBFE02, 0x0ED709D8);
	r0 = D(r0, s0_1_0, 0xF7EDF800, 0x0613FD07, 0xF8068110, 0x170F0003);
	r1 = D(r1, s0_1_0, 0x03BDE3EC, 0xFAFCFEFC, 0xFAF503EB, 0xEF01FC14);
	r2 = D(r2, s0_1_0, 0xFC00010B, 0xF708ED0B, 0xF722ED17, 0xFD0A0704);
	r3 = D(r3, s0_1_0, 0x020104FB, 0xFAFBF604, 0x0508FF00, 0xFE04FE0D);
	r4 = D(r4, s0_1_0, 0x03F9EE0C, 0xF2FCFA16, 0x020501FE, 0xF4C0CD05);
	r5 = D(r5, s0_1_0, 0xF2FE0B01, 0xF3EBE7F0, 0xFBCFEEF3, 0xEBFD07F5);
	r6 = D(r6, s0_1_0, 0xF6B5F504, 0xFA039D22, 0x0BD5FAF2, 0xF6FC1A13);
	r7 = D(r7, s0_1_0, 0xFEBA8B03, 0xFE06FCEB, 0x0BFAFEF9, 0xFA03E612);
	r0 = D(r0, s0_1_1, 0xFFDFEF17, 0xE0A4CC10, 0xC0819A15, 0x0F0D030B);
	r1 = D(r1, s0_1_1, 0xDFD8CD04, 0x0AFE0207, 0xEF0104E7, 0xD9E0F41D);
	r2 = D(r2, s0_1_1, 0x05F30403, 0xEAC6E811, 0xE6B5CD02, 0x190BF4EC);
	r3 = D(r3, s0_1_1, 0x01FC09FC, 0x16C4DC22, 0x13D0F3F3, 0xF8FBFD08);
	r4 = D(r4, s0_1_1, 0xFDC1CB07, 0xAC99F634, 0x81F50205, 0xEBD4F91D);
	r5 = D(r5, s0_1_1, 0x1714DC10, 0x1CEBB016, 0x14F6D309, 0x21FEE9E9);
	r6 = D(r6, s0_1_1, 0xF50FF4F7, 0xCB81CFFF, 0xDFDFEE01, 0xF4F21620);
	r7 = D(r7, s0_1_1, 0xEC15FA15, 0xF4FBE4FA, 0xD5292E01, 0x31118C06);
	r0 = D(r0, s0_1_2, 0x04F5F0FC, 0x0619D4F2, 0xF90C8115, 0xFD020106);
	r1 = D(r1, s0_1_2, 0xF710F3F4, 0x0201FFFE, 0x0102FC09, 0xFC02F905);
	r2 = D(r2, s0_1_2, 0xFF00FDFF, 0xF8D4C50F, 0xF8F6E306, 0xF800D215);
	r3 = D(r3, s0_1_2, 0x02FE0001, 0x0302EAF7, 0x03EEF901, 0x01FF0300);
	r4 = D(r4, s0_1_2, 0xF90BFBF4, 0xFAFEFA03, 0xFF00FF00, 0xFD05F807);
	r5 = D(r5, s0_1_2, 0x0000E622, 0xF30D02F9, 0xFD040204, 0x04F9231E);
	r6 = D(r6, s0_1_2, 0x03FD0A00, 0xDEEF9B04, 0x04FF10F0, 0xFF01FBF3);
	r7 = D(r7, s0_1_2, 0x00E61924, 0x03F6EE04, 0xFB0C10F5, 0x0004F1FC);
	r0 = D(r0, s0_2_0, 0x0200F7FC, 0x08F7DAE8, 0x1104C7E6, 0xF1E9D407);
	r1 = D(r1, s0_2_0, 0x0807EFF7, 0x01020001, 0xFBF518FD, 0x0504E706);
	r2 = D(r2, s0_2_0, 0xFF000002, 0xFA0814FA, 0xFC08EFF9, 0xDD19ED18);
	r3 = D(r3, s0_2_0, 0xFF0000FF, 0xFF03F700, 0x0301F501, 0x01030000);
	r4 = D(r4, s0_2_0, 0xFFEBEC07, 0xFE06F9F9, 0x02000001, 0xFE1514FE);
	r5 = D(r5, s0_2_0, 0x0CFF1407, 0xF70CFC10, 0xFAFEFB0A, 0x07F11FF6);
	r6 = D(r6, s0_2_0, 0x01090AFD, 0x010A0909, 0x01E7F9FD, 0xFF08FFFF);
	r7 = D(r7, s0_2_0, 0x0000FA04, 0xFD0301FE, 0x01FF06F3, 0xDE1DDF05);
	r0 = D(r0, s0_2_1, 0xFFF4EA04, 0xE8E0BE1E, 0xFB01C703, 0xF9B4EDF6);
	r1 = D(r1, s0_2_1, 0xF90B0B03, 0x000000FF, 0x00041700, 0xFDF4E310);
	r2 = D(r2, s0_2_1, 0x02030301, 0x05180508, 0x070DCA07, 0x2081D8EE);
	r3 = D(r3, s0_2_1, 0x00000200, 0xFCFDF1FD, 0xF8F0F6FE, 0x02FFFF02);
	r4 = D(r4, s0_2_1, 0xFAFDF300, 0x000AE9FB, 0x020A0505, 0x03150107);
	r5 = D(r5, s0_2_1, 0x0701BE09, 0x0899E4F5, 0xFFE7EAFD, 0x00F21904);
	r6 = D(r6, s0_2_1, 0xFDFEF6FD, 0xF4151006, 0x02010400, 0x04030102);
	r7 = D(r7, s0_2_1, 0x03F001FB, 0x0301FDFC, 0x051429FC, 0xCA818103);
	r0 = D(r0, s0_2_2, 0x05000601, 0xFD030001, 0x0B0BD31B, 0x00F9D508);
	r1 = D(r1, s0_2_2, 0x06020FF9, 0x01FEFEFF, 0x000101F9, 0x04FEE802);
	r2 = D(r2, s0_2_2, 0x01FEFF00, 0xF710260D, 0x02E80207, 0xFBF3EF06);
	r3 = D(r3, s0_2_2, 0xFFFF02FF, 0x0002FDFF, 0xFEFBFF02, 0x00FFFE01);
	r4 = D(r4, s0_2_2, 0x05FC1204, 0xFD0201FA, 0x01000101, 0xF90110F9);
	r5 = D(r5, s0_2_2, 0x00ECB717, 0xFC1701FB, 0xFE06F803, 0x0CFA1408);
	r6 = D(r6, s0_2_2, 0x05FCFCFE, 0x091222F4, 0x020C0609, 0x010200FF);
	r7 = D(r7, s0_2_2, 0x0BFD1802, 0x010200FB, 0xFD020AFB, 0xDEF32108);
	r0 = D(r0, s1_0_0, 0xFC0600C1, 0x02090B05, 0x092E059F, 0x0606FCF4);
	r1 = D(r1, s1_0_0, 0xF3050301, 0x00000201, 0xF7FAFC02, 0x070CF7EF);
	r2 = D(r2, s1_0_0, 0x02F9FD01, 0x0CF0EFF5, 0xF4020903, 0xFE0811E7);
	r3 = D(r3, s1_0_0, 0x000700FF, 0xFFFAFEFF, 0xFE02FDF6, 0x00000301);
	r4 = D(r4, s1_0_0, 0xFD07EEF2, 0x0311FCFD, 0xFF030100, 0xFE06FBFE);
	r5 = D(r5, s1_0_0, 0x0B2F09ED, 0xFA1CFF06, 0xFB05F7F8, 0xF3152CE6);
	r6 = D(r6, s1_0_0, 0x00050502, 0x0A2A0AC2, 0x03060403, 0xFA0403FB);
	r7 = D(r7, s1_0_0, 0x1214FBDC, 0xF3010003, 0x0205FF02, 0x01D6091A);
	r0 = D(r0, s1_0_1, 0x0605F9E6, 0x090CFEFB, 0x0F070EE7, 0x0405F903);
	r1 = D(r1, s1_0_1, 0x091113F9, 0xFE0004FF, 0xFC00FFFD, 0x0E1301F8);
	r2 = D(r2, s1_0_1, 0xFCFD0502, 0xF2FC0411, 0xF7F3FC06, 0xFC07F9FA);
	r3 = D(r3, s1_0_1, 0x03010000, 0xFE00FD01, 0x0206FAFF, 0xFB00FF00);
	r4 = D(r4, s1_0_1, 0x0405F0F4, 0x080904FB, 0xFF01FF01, 0x00E4EF07);
	r5 = D(r5, s1_0_1, 0x03201C0B, 0xF1FA0C04, 0xFB00F703, 0x1B08E1FA);
	r6 = D(r6, s1_0_1, 0xFF00FCFD, 0x191BE2CD, 0x08FC0001, 0x0CFC02F1);
	r7 = D(r7, s1_0_1, 0x181C16EE, 0xF9FF0110, 0x06FC05FA, 0xEAECE514);
	r0 = D(r0, s1_0_2, 0x100705C5, 0x0BF90803, 0x0223D3DC, 0x0306FEF5);
	r1 = D(r1, s1_0_2, 0xEF0002FA, 0xFDFE0000, 0xFC00FF00, 0x050600E0);
	r2 = D(r2, s1_0_2, 0xFD01FDFF, 0xED020FFD, 0xFE0C0DFA, 0x180807F7);
	r3 = D(r3, s1_0_2, 0xF6FF0101, 0xF9FE0206, 0x000403F6, 0xFDFF0001);
	r4 = D(r4, s1_0_2, 0x0E00F7FC, 0xFF05FF03, 0x02020200, 0xECFAEE00);
	r5 = D(r5, s1_0_2, 0x051F09D2, 0xE807FEFE, 0xFE00FFF7, 0x070917DD);
	r6 = D(r6, s1_0_2, 0x0B0407FC, 0x0FF428C0, 0x03F501F6, 0x06FEFFFC);
	r7 = D(r7, s1_0_2, 0x1B1E28D1, 0xFA0201F4, 0x02030400, 0xF8E8EF06);
	r0 = D(r0, s1_1_0, 0x0607FADF, 0x0AFD02FC, 0xCF1C1AC4, 0x0107FD01);
	r1 = D(r1, s1_1_0, 0xF1100105, 0xFFFE08FF, 0xF0FFF8FD, 0x0208F6F3);
	r2 = D(r2, s1_1_0, 0xF703FCFD, 0xE1100D07, 0xFE0709F3, 0xFE060AEE);
	r3 = D(r3, s1_1_0, 0x0100FE00, 0xFC060203, 0x02FEFFF7, 0x00050000);
	r4 = D(r4, s1_1_0, 0x11FB00FB, 0x0301F3F7, 0x00030203, 0x010CEDFE);
	r5 = D(r5, s1_1_0, 0x291D00FD, 0xEE130E03, 0xE60DFC04, 0xFE1E2D00);
	r6 = D(r6, s1_1_0, 0xEF1406FF, 0xF31D0DAE, 0x13FE0C04, 0xFB06FEFB);
	r7 = D(r7, s1_1_0, 0x08F904E4, 0x00FF0602, 0xFE0902FD, 0xEFEE1507);
	r0 = D(r0, s1_1_1, 0xF707FE33, 0xFC13EEFE, 0x8C05E803, 0x13F6F6F9);
	r1 = D(r1, s1_1_1, 0x180503F9, 0x00FE0701, 0xF7F606FF, 0x02FEF712);
	r2 = D(r2, s1_1_1, 0x0200F801, 0xE511E303, 0xE5FBFA04, 0x00FAFC01);
	r3 = D(r3, s1_1_1, 0x0202F503, 0xFC02FCFD, 0x07F5F9F4, 0xFD0000FC);
	r4 = D(r4, s1_1_1, 0xFF04FFF1, 0xF409F402, 0xFB02FBFE, 0xE318E506);
	r5 = D(r5, s1_1_1, 0x151429FF, 0x120DFF05, 0xE201EFFF, 0xE80D3613);
	r6 = D(r6, s1_1_1, 0x00F6FEF8, 0xC811F7D8, 0x09000215, 0x0BF3FEF1);
	r7 = D(r7, s1_1_1, 0xFF0830E6, 0xE80FF4FF, 0x0CFDF9F5, 0xF2FBF6F6);
	r0 = D(r0, s1_1_2, 0x0E04FBD2, 0x17FEEDFB, 0xED29FDF2, 0x1601F7FF);
	r1 = D(r1, s1_1_2, 0xF1050DFF, 0xFB00FE00, 0x00F8F8FF, 0xFDFE03F3);
	r2 = D(r2, s1_1_2, 0xFCFDFF02, 0x1618DEFB, 0x10021000, 0x13FD0300);
	r3 = D(r3, s1_1_2, 0xFE02FD01, 0xF2FCFF01, 0xF2FEFFFF, 0xFD000200);
	r4 = D(r4, s1_1_2, 0x06FC00F9, 0xFFFFF9F9, 0x01FF0300, 0x1605FDF9);
	r5 = D(r5, s1_1_2, 0x2214EEDE, 0xD3FFFD00, 0xF607F101, 0x0A0518EB);
	r6 = D(r6, s1_1_2, 0x17FF07FE, 0x1808F9E2, 0xF2010C00, 0xFDFDFF00);
	r7 = D(r7, s1_1_2, 0x241028D5, 0x140303FE, 0xFE05FFFA, 0x1AE7E404);
	r0 = D(r0, s1_2_0, 0x0701FCB9, 0x17F5F115, 0x0CFC40AC, 0xEC0A02F9);
	r1 = D(r1, s1_2_0, 0xE50F09F6, 0xFCFFFD02, 0xEEFFFB01, 0x0200F6EE);
	r2 = D(r2, s1_2_0, 0x0002FCFE, 0x0A07FAF5, 0x0C0B0CF5, 0xF8FA0BFC);
	r3 = D(r3, s1_2_0, 0x0301FFFF, 0xF9FF00FD, 0x01FC01EE, 0x00FD0001);
	r4 = D(r4, s1_2_0, 0x0410F20C, 0xFDF607FD, 0x03020000, 0xF6F8F5FE);
	r5 = D(r5, s1_2_0, 0xF61614EC, 0xD80812FC, 0xD70BFF01, 0x011115DF);
	r6 = D(r6, s1_2_0, 0x0006FBFE, 0x1B0120B0, 0x0F0408F6, 0x020D03FE);
	r7 = D(r7, s1_2_0, 0x19170FF4, 0xFDFD01FE, 0x000F03FE, 0x06F0FD1E);
	r0 = D(r0, s1_2_1, 0xF8FDFAE1, 0x1C05EFFC, 0xF0141EB2, 0xF510E6F0);
	r1 = D(r1, s1_2_1, 0x0E09F3F7, 0x0002FD02, 0x02ECF7FC, 0xF8FBF6F4);
	r2 = D(r2, s1_2_1, 0xF5FFFD00, 0xEBF513EF, 0xDD0412FB, 0xFB0D00F9);
	r3 = D(r3, s1_2_1, 0x0100FF01, 0xF2FF0401, 0xF902F5FD, 0xFF03FE00);
	r4 = D(r4, s1_2_1, 0x0604F502, 0xFA0006F7, 0x02FE0401, 0x06F812F0);
	r5 = D(r5, s1_2_1, 0x0CF81304, 0x190BE805, 0xFF09F402, 0xFE1DF9DF);
	r6 = D(r6, s1_2_1, 0xF2F709FD, 0x070C28D5, 0xFFFD0800, 0x09FAFDF8);
	r7 = D(r7, s1_2_1, 0xFD0A37EC, 0xE90109FD, 0x0FF500F8, 0x0BE91C15);
	r0 = D(r0, s1_2_2, 0xF20904C0, 0xFA051102, 0x02172DB8, 0x0402EEF7);
	r1 = D(r1, s1_2_2, 0x16030FF4, 0xFCFFFE01, 0x04F20302, 0x0105F0FB);
	r2 = D(r2, s1_2_2, 0x08FFFBFF, 0xD8FC1306, 0x2301F301, 0x1208FEF9);
	r3 = D(r3, s1_2_2, 0xFEFF0100, 0xF902F6FE, 0x0906F9FA, 0xFE00FF01);
	r4 = D(r4, s1_2_2, 0xF20514FC, 0xF6FA13FF, 0xFF020301, 0xEEFE12F9);
	r5 = D(r5, s1_2_2, 0x1E10FEDC, 0xE8FFFF03, 0xF605F3F5, 0x270B0FBE);
	r6 = D(r6, s1_2_2, 0x180000F5, 0x260238C2, 0xF20405FB, 0xFBFE02FE);
	r7 = D(r7, s1_2_2, 0x1C18F9D9, 0x03030BFB, 0x00050EFF, 0xDADD0D11);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xF9F30B0B, 0xE1F1EB0E, 0xFFF4003C, 0x0B06FC00);
	r1 = D(r1, s0_0_0, 0x0AF01CFA, 0x07FB0300, 0x01FAFE02, 0x040005FD);
	r2 = D(r2, s0_0_0, 0xFEFEF3FD, 0xF00C0B1D, 0x01F00C04, 0xC806080C);
	r3 = D(r3, s0_0_0, 0xF9FAFE00, 0xF805FEF9, 0xFAFFFDFE, 0xFE0402FD);
	r4 = D(r4, s0_0_0, 0xE203FA08, 0xFAF10408, 0x01020103, 0x04ED1804);
	r5 = D(r5, s0_0_0, 0xF6E41622, 0x0812FA02, 0xF9000903, 0xD4DA1F1E);
	r6 = D(r6, s0_0_0, 0x03FAF7FF, 0xE2050938, 0xEA0410F2, 0xFAFA0308);
	r7 = D(r7, s0_0_0, 0xFEE00E19, 0xFFFAF7FF, 0x03040104, 0xE804F9FB);
	r0 = D(r0, s0_0_1, 0xFC040307, 0xD2FDFF04, 0x04CC2128, 0x0702F206);
	r1 = D(r1, s0_0_1, 0xFE02D902, 0x00FDFA01, 0xFE0002F5, 0x05D427FC);
	r2 = D(r2, s0_0_1, 0xDF41E104, 0xD4FF0E15, 0xFA0AFA0F, 0xF9FAFD07);
	r3 = D(r3, s0_0_1, 0xF98107FA, 0xFA02FDF7, 0x05EA10FB, 0xFEF00400);
	r4 = D(r4, s0_0_1, 0xDBFC0BEB, 0x00FA1502, 0xFB02FDFF, 0xDCFA140F);
	r5 = D(r5, s0_0_1, 0xF8D6B128, 0x03DECC03, 0x07ED1CF6, 0x09032B12);
	r6 = D(r6, s0_0_1, 0xFC0205F1, 0x0FD12726, 0xF5E20801, 0xECE6EEF9);
	r7 = D(r7, s0_0_1, 0xE7FF18FC, 0x002BED11, 0x04FAFD07, 0xE9FD00F8);
	r0 = D(r0, s0_0_2, 0xFD000A06, 0xF7FFFDE8, 0x0CCC0D19, 0x0703FE07);
	r1 = D(r1, s0_0_2, 0x0604F504, 0xFE0003FC, 0xFEFFFDFA, 0x00FF0DFB);
	r2 = D(r2, s0_0_2, 0x07FFFAF9, 0xF8F5F50D, 0x0EF9E8FA, 0xE4000209);
	r3 = D(r3, s0_0_2, 0x03FC03FE, 0xFEFAFFFB, 0xFFF70604, 0xFE0201FD);
	r4 = D(r4, s0_0_2, 0xF9FD11F0, 0x06F6FFFC, 0x02FF0001, 0xEB0B041B);
	r5 = D(r5, s0_0_2, 0x03F9CF0D, 0xF5FF2912, 0xFA000617, 0xEFFE0A0F);
	r6 = D(r6, s0_0_2, 0x0301F608, 0xD9F6043C, 0xFB040803, 0x07010300);
	r7 = D(r7, s0_0_2, 0x1AF70C1B, 0xFEFBF903, 0xFB040308, 0xE8F3CDD3);
	r0 = D(r0, s0_1_0, 0x13050CFB, 0x03E7050C, 0xF3EDF413, 0xE5EEFA07);
	r1 = D(r1, s0_1_0, 0x09E902E3, 0x0403FF00, 0x14EF00F1, 0x0A210405);
	r2 = D(r2, s0_1_0, 0x01FF0DFF, 0xEBED00F8, 0xDDED2F05, 0xDAF9F207);
	r3 = D(r3, s0_1_0, 0xFF03F903, 0x030CFCFF, 0xFB000205, 0xFB0302FE);
	r4 = D(r4, s0_1_0, 0xE7FD0EFB, 0xF608070C, 0xFEFD02FD, 0x12F810FD);
	r5 = D(r5, s0_1_0, 0x13D6CD1C, 0x0B05F7D7, 0xFD00F2FE, 0x19FBE319);
	r6 = D(r6, s0_1_0, 0xF5FD11F5, 0xCE040C25, 0x07FA0DF3, 0xF6EC12FD);
	r7 = D(r7, s0_1_0, 0xFB0B2214, 0xFEE9FCFD, 0x0DF8FD05, 0xFBDFD9E0);
	r0 = D(r0, s0_1_1, 0xF71501F5, 0xF20FE50B, 0xF3060CF5, 0x0FE31504);
	r1 = D(r1, s0_1_1, 0x0905230E, 0xF80504FF, 0xF60A0906, 0xFD1EFD00);
	r2 = D(r2, s0_1_1, 0x0A0211FB, 0x0F2020F7, 0x171AD3F4, 0xFEED0EED);
	r3 = D(r3, s0_1_1, 0x040203FE, 0xF804FCF9, 0x1105F600, 0x0011FFFB);
	r4 = D(r4, s0_1_1, 0xCD010C12, 0xE438FC06, 0x03620E06, 0xFE1D1EF1);
	r5 = D(r5, s0_1_1, 0xEED2F80C, 0xFCD4F2FF, 0xFEF60002, 0x19DAD803);
	r6 = D(r6, s0_1_1, 0x16F7E301, 0x2C17FEEC, 0xE105130C, 0xFDFC0F06);
	r7 = D(r7, s0_1_1, 0x400FBB07, 0x23F3F6FB, 0x00DC1FFD, 0xFD1BEAFC);
	r0 = D(r0, s0_1_2, 0x040C0D0A, 0xF7EEFFDB, 0xF416242B, 0xEF011113);
	r1 = D(r1, s0_1_2, 0x05F9D8EF, 0x02FFFCFE, 0xF3FE05FB, 0xFFF70507);
	r2 = D(r2, s0_1_2, 0xFC0102F9, 0xDD090907, 0xFBF2F913, 0xEA0D00F3);
	r3 = D(r3, s0_1_2, 0x020000FE, 0xF80203FF, 0xFAFC0E0A, 0x02020201);
	r4 = D(r4, s0_1_2, 0x00FA0307, 0xFB040600, 0x02060101, 0x01F3FEEC);
	r5 = D(r5, s0_1_2, 0xFF0DF6F6, 0x07FADAFC, 0xF8FFFE06, 0x0CFC0D18);
	r6 = D(r6, s0_1_2, 0xF8FB0F08, 0xF6E31EFC, 0x16FAF6F8, 0x0B05F700);
	r7 = D(r7, s0_1_2, 0xF0E60115, 0xF0FA0414, 0x15F40505, 0xE1F3F2D0);
	r0 = D(r0, s0_2_0, 0x06020508, 0x18E3CDEC, 0x0DF51812, 0x02FD14FC);
	r1 = D(r1, s0_2_0, 0x0AFA0301, 0x000102FD, 0x19080DE2, 0xF604F70D);
	r2 = D(r2, s0_2_0, 0x010004FF, 0x11F6E308, 0x1EFF1307, 0xE213FD09);
	r3 = D(r3, s0_2_0, 0x0000FF01, 0xF900F9FE, 0xFDFF07FB, 0xFC03FD01);
	r4 = D(r4, s0_2_0, 0x0F0015FA, 0x0AF90200, 0x07FE0600, 0x01FE0509);
	r5 = D(r5, s0_2_0, 0x18FDFA13, 0xF903F506, 0x01FE01FF, 0x0DFAD81A);
	r6 = D(r6, s0_2_0, 0x0500FFFB, 0x0A050A12, 0x07FB02FD, 0x0A0203FD);
	r7 = D(r7, s0_2_0, 0x02FB0007, 0x13FB04F8, 0x0302FE02, 0xE402FF04);
	r0 = D(r0, s0_2_1, 0x06F8FFFD, 0xC21D1E0B, 0x09FAEB23, 0xFA032200);
	r1 = D(r1, s0_2_1, 0xB7040806, 0xFFFFFF00, 0x09E80EFB, 0xFC14F40B);
	r2 = D(r2, s0_2_1, 0xF5020000, 0xBD13F107, 0x0405D603, 0x14ECECED);
	r3 = D(r3, s0_2_1, 0xFE00FF02, 0x070208FB, 0x09040AFA, 0x01010100);
	r4 = D(r4, s0_2_1, 0x01FFF9FC, 0xF1DDF703, 0xF8FFFA01, 0xEF05D30D);
	r5 = D(r5, s0_2_1, 0xD9051311, 0x11F91A03, 0xFDFE22FE, 0xFBFD0212);
	r6 = D(r6, s0_2_1, 0x0C02FE01, 0x1BFE0A14, 0xCD00FA0E, 0xFF02F801);
	r7 = D(r7, s0_2_1, 0xFA022A19, 0xFAFDFCFF, 0xF2FCFC0F, 0x1C0C2100);
	r0 = D(r0, s0_2_2, 0x02FF020C, 0x13FCE0E2, 0x13F8FF2A, 0xF1030C07);
	r1 = D(r1, s0_2_2, 0x0802F6E7, 0xFD020001, 0xFFF6FFFE, 0xEEFA0909);
	r2 = D(r2, s0_2_2, 0x0102FDFF, 0xDF02ED05, 0x00FE0B0E, 0xD210FC02);
	r3 = D(r3, s0_2_2, 0x0100FF02, 0xF80107FA, 0xF70105FD, 0xFF0102FF);
	r4 = D(r4, s0_2_2, 0x1AFB01F6, 0xFDF6FAFD, 0x03FFFF02, 0x0AFC1404);
	r5 = D(r5, s0_2_2, 0x0A031719, 0x1D02EB06, 0x0500FAFB, 0xF8FD0718);
	r6 = D(r6, s0_2_2, 0x00FF0000, 0x8108E11B, 0x17FE0402, 0x05FE02FD);
	r7 = D(r7, s0_2_2, 0xF3030708, 0xFA04F200, 0x1000080D, 0x52FBE7C2);
	r0 = D(r0, s1_0_0, 0xE6FAF1F7, 0x0EF9FCF4, 0x8222FEFD, 0x06FCFDFE);
	r1 = D(r1, s1_0_0, 0x0D0C07F2, 0x00FEFD04, 0x0002FE04, 0x01F2FBF8);
	r2 = D(r2, s1_0_0, 0x01F800FE, 0xFA050CF1, 0xFB030BFF, 0x07FC06F3);
	r3 = D(r3, s1_0_0, 0xFFFF0201, 0x050105F9, 0x01FC03FE, 0xFEFF0101);
	r4 = D(r4, s1_0_0, 0x1A01FC06, 0xFCFCFFFC, 0xFE0001FF, 0xF1000103);
	r5 = D(r5, s1_0_0, 0xF7CCAAFD, 0xF81503F3, 0x070210FD, 0xDEECDEF8);
	r6 = D(r6, s1_0_0, 0x0002FDF1, 0xF0E6D7EF, 0xFD031102, 0x020909FE);
	r7 = D(r7, s1_0_0, 0x05F2ECED, 0xFD0500FB, 0x01020102, 0x181004DF);
	r0 = D(r0, s1_0_1, 0xF5000807, 0xF8060A01, 0x9F09EFE5, 0x00FEF8FC);
	r1 = D(r1, s1_0_1, 0xF50407EF, 0xFEFF00FE, 0x0203FE03, 0xFFEEF3F4);
	r2 = D(r2, s1_0_1, 0x05F70B06, 0xE908FBFC, 0xF80B0606, 0xFB05FFFA);
	r3 = D(r3, s1_0_1, 0xFBFB0303, 0xFE0402F7, 0xFE010500, 0xFF010101);
	r4 = D(r4, s1_0_1, 0x03FD00FE, 0xFAFFFE00, 0x00000101, 0xFF04F9F2);
	r5 = D(r5, s1_0_1, 0xFED8C2F8, 0x020A12F1, 0x04FBFCF5, 0xA102120C);
	r6 = D(r6, s1_0_1, 0xF5FCFCFD, 0xDCF92703, 0x00FBF5FE, 0x0EFF0603);
	r7 = D(r7, s1_0_1, 0xF0C69DF7, 0xF2FF0AFD, 0x020303FD, 0x171401F1);
	r0 = D(r0, s1_0_2, 0xF2F2FDF0, 0xFF08FDF9, 0xD7CFFD02, 0xFCF900FA);
	r1 = D(r1, s1_0_2, 0xF600FBFB, 0xFE020000, 0x05010202, 0x04EDFDF7);
	r2 = D(r2, s1_0_2, 0xFD02FEFD, 0xFA0507F3, 0x06F8FDF3, 0xED0609FA);
	r3 = D(r3, s1_0_2, 0xFE00FFFC, 0xFE03FCF4, 0xF8FA01FD, 0x00010201);
	r4 = D(r4, s1_0_2, 0xFA0107F5, 0x0000FFF8, 0xFFFE0000, 0x000B0DFB);
	r5 = D(r5, s1_0_2, 0xE8F3F108, 0x0DFCFAED, 0xF3FD04F6, 0x20F10AF7);
	r6 = D(r6, s1_0_2, 0xFBFB01FC, 0x8103B4F8, 0x08FFFDFF, 0xFDFEFAFF);
	r7 = D(r7, s1_0_2, 0xD9D5C302, 0xFE01FDF0, 0x05FF0403, 0x172E18F2);
	r0 = D(r0, s1_1_0, 0xFA0EFA00, 0xF701FB0A, 0x0B1E010C, 0xFCF70602);
	r1 = D(r1, s1_1_0, 0x031AF4E7, 0x00010101, 0xF8020002, 0x09FC0802);
	r2 = D(r2, s1_1_0, 0x010BFE01, 0x040500F9, 0x06021811, 0x15FC06F5);
	r3 = D(r3, s1_1_0, 0x00FFFEFF, 0x04FC08F4, 0xFEFA0704, 0x01FF0A06);
	r4 = D(r4, s1_1_0, 0xE606FBF6, 0x04FF03FD, 0xFD02FD00, 0x10090AF0);
	r5 = D(r5, s1_1_0, 0xFDB0D7EC, 0x030906E8, 0xF11CFAF6, 0xE8DDD1E7);
	r6 = D(r6, s1_1_0, 0x041103FB, 0xF8FBFE14, 0xFCFFE9F4, 0x08050DF9);
	r7 = D(r7, s1_1_0, 0xF4161303, 0x0801FF08, 0x02FF0400, 0xF300FCEF);
	r0 = D(r0, s1_1_1, 0x1714E8EC, 0x2E120DE4, 0xC617D4DC, 0x03F811EE);
	r1 = D(r1, s1_1_1, 0x0609F90A, 0x07FC0008, 0x090A0604, 0x08EFFDF8);
	r2 = D(r2, s1_1_1, 0x0604EF00, 0xD907E1EF, 0xF607EEE8, 0xF5110CF5);
	r3 = D(r3, s1_1_1, 0xFA02F9FF, 0xF30DDE06, 0xFC0CD404, 0xF5FCFE02);
	r4 = D(r4, s1_1_1, 0xE413F7FF, 0x07F611FF, 0xFC04F8FD, 0xF10AE402);
	r5 = D(r5, s1_1_1, 0xBAC5CEFF, 0x0F19EDFE, 0xF40EF3F6, 0xAB06C3FB);
	r6 = D(r6, s1_1_1, 0x0802EF08, 0x9E25E0D4, 0xEF08E3F9, 0x81F5FB02);
	r7 = D(r7, s1_1_1, 0xF1E9D3D9, 0xEF0FF1F0, 0xFE0815FE, 0xFBEFF8F5);
	r0 = D(r0, s1_1_2, 0xFCF7FE1C, 0xE80AF5FE, 0xF7F9E9E5, 0x06F00AF1);
	r1 = D(r1, s1_1_2, 0x03F906FD, 0x01060303, 0xFF050102, 0x08F0F90C);
	r2 = D(r2, s1_1_2, 0x05040003, 0xC50D15FD, 0xF2FC10EB, 0xF40D0AFB);
	r3 = D(r3, s1_1_2, 0x00000001, 0xF80508FD, 0xEAFC0DFC, 0x00020203);
	r4 = D(r4, s1_1_2, 0xF0FF05FB, 0x07FF0700, 0xFDFEFDFC, 0xDF0BFA02);
	r5 = D(r5, s1_1_2, 0xEDF10202, 0xFFFA0800, 0x01FC0BF2, 0xF6F4F707);
	r6 = D(r6, s1_1_2, 0xFFF900F2, 0xD302B7CD, 0xEEFBFA04, 0xFDFA00FB);
	r7 = D(r7, s1_1_2, 0xBFAFFEF1, 0xFBFF0A06, 0x090103FC, 0x271B06F1);
	r0 = D(r0, s1_2_0, 0xF3FAFB00, 0xFE0002F6, 0xA801E0F9, 0xFE02FDEB);
	r1 = D(r1, s1_2_0, 0xFE05FBF2, 0xFEFD0301, 0x04F30FF7, 0x01F50B07);
	r2 = D(r2, s1_2_0, 0x000100FF, 0x000400EA, 0xFA02FCE7, 0x010A1908);
	r3 = D(r3, s1_2_0, 0x00000101, 0xFF0202F7, 0xFCFA0208, 0xFFFF0102);
	r4 = D(r4, s1_2_0, 0xD71302EE, 0x0207F6F5, 0x01FEFF00, 0xF609FCF7);
	r5 = D(r5, s1_2_0, 0xD602F2F5, 0xF9070310, 0xF40405F5, 0xCEE1F2FD);
	r6 = D(r6, s1_2_0, 0xFE0404F9, 0xE91700DA, 0x01F7FCFA, 0xFE0100FD);
	r7 = D(r7, s1_2_0, 0xFDF311F2, 0x00FEFAF7, 0x0305FBFB, 0x0B0D02FC);
	r0 = D(r0, s1_2_1, 0xFF0AEEFF, 0x1A0FEAF8, 0xE70CF8ED, 0x000AF9FE);
	r1 = D(r1, s1_2_1, 0xFF08F6F6, 0x02F9FD01, 0x150CE5FD, 0xFDFFFCF0);
	r2 = D(r2, s1_2_1, 0x03FCFF00, 0xEEFF00F6, 0x0605EF02, 0xF606E6EF);
	r3 = D(r3, s1_2_1, 0x00FFFEFF, 0x030904F8, 0xEB02FD06, 0x00010104);
	r4 = D(r4, s1_2_1, 0xE505FD02, 0xEC03F4FD, 0xFCFAF602, 0xFDF6FBF4);
	r5 = D(r5, s1_2_1, 0xE714FBE7, 0xF20207E9, 0x020200FD, 0xDE140501);
	r6 = D(r6, s1_2_1, 0x0407F6FB, 0xD20AF2F6, 0xE0FAEFFD, 0x0907FB00);
	r7 = D(r7, s1_2_1, 0xFFF0F7F0, 0xFD02FF00, 0xFA020100, 0xE2E8F2F0);
	r0 = D(r0, s1_2_2, 0xF6EFF7F5, 0xED0B030E, 0xC209E6D5, 0x070004FB);
	r1 = D(r1, s1_2_2, 0xF40101F9, 0xFE030101, 0x07FF0AF8, 0xF9FBFCFF);
	r2 = D(r2, s1_2_2, 0x00000000, 0x0C1203EB, 0xE5FE08F8, 0xF80306E4);
	r3 = D(r3, s1_2_2, 0x00FF02FF, 0xF704FE08, 0xF0F80303, 0x00020100);
	r4 = D(r4, s1_2_2, 0xFB0000F7, 0x0B02F8FD, 0x00FFFE01, 0x0E0901EE);
	r5 = D(r5, s1_2_2, 0x05F020FF, 0x05FDFEEF, 0xF2FD0601, 0xC3E9F8EC);
	r6 = D(r6, s1_2_2, 0xF7F600FF, 0xB6DDDB11, 0xFFF7F7F2, 0xFFFE00FE);
	r7 = D(r7, s1_2_2, 0xCFCCFBFE, 0x0B01FEFE, 0xFFFF0AF2, 0x1C1008E9);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_4x32_SOFT_vk] -conv4
//!HOOK LUMA
//!COMPUTE 32 16 8 8
//!BIND conv3
//!BIND LUMA
//!SAVE conv4
//!WIDTH LUMA.w 4 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 4
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_spirv_intrinsics : require
spirv_instruction (extensions = ["SPV_KHR_integer_dot_product"], capabilities = [6019, 6018], id = 4450)
int dp4(int a, int b, spirv_literal int fmt);
#define D(r, s, a, b, c, d) r + ivec4(dp4(s, a, 0), dp4(s, b, 0), dp4(s, c, 0), dp4(s, d, 0))
shared int G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(4, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			vec4 r, g, b, a;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv3_pt;
			r = conv3_gather(p, 0);
			g = conv3_gather(p, 1);
			b = conv3_gather(p, 2);
			a = conv3_gather(p, 3);
			vec4 v0 = vec4(r.w, g.w, b.w, a.w);
			vec4 v1 = vec4(r.z, g.z, b.z, a.z);
			vec4 v2 = vec4(r.x, g.x, b.x, a.x);
			vec4 v3 = vec4(r.y, g.y, b.y, a.y);
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv3_pt;
			r = conv3_gather(p, 0);
			g = conv3_gather(p, 1);
			b = conv3_gather(p, 2);
			a = conv3_gather(p, 3);
			vec4 v4 = vec4(r.w, g.w, b.w, a.w);
			vec4 v5 = vec4(r.z, g.z, b.z, a.z);
			vec4 v6 = vec4(r.x, g.x, b.x, a.x);
			vec4 v7 = vec4(r.y, g.y, b.y, a.y);
			G[0][ay][ax] = int(packSnorm4x8(v0));
			G[1][ay][ax] = int(packSnorm4x8(v1));
			G[2][ay][ax] = int(packSnorm4x8(v2));
			G[3][ay][ax] = int(packSnorm4x8(v3));
			G[4][ay][ax] = int(packSnorm4x8(v4));
			G[5][ay][ax] = int(packSnorm4x8(v5));
			G[6][ay][ax] = int(packSnorm4x8(v6));
			G[7][ay][ax] = int(packSnorm4x8(v7));
		}
	}
	barrier();
	int s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	ivec4 r0, r1, r2, r3, r4, r5, r6, r7;
	vec4 f0, f1, f2, f3, f4, f5, f6, f7;
	r0 = ivec4(0); r1 = ivec4(0); r2 = ivec4(0); r3 = ivec4(0); r4 = ivec4(0); r5 = ivec4(0); r6 = ivec4(0); r7 = ivec4(0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0x0417FE06, 0x0103FF01, 0x1513C10F, 0xF416071B);
	r1 = D(r1, s0_0_0, 0xFF01FFFF, 0x15D3F307, 0xE9060D0B, 0xFC0FFD0E);
	r2 = D(r2, s0_0_0, 0x0405FF01, 0x09060914, 0x14E81DF3, 0x02FF0006);
	r3 = D(r3, s0_0_0, 0x0302FE00, 0x0004FF00, 0xFDFF0101, 0x0402FF02);
	r4 = D(r4, s0_0_0, 0xFD07F803, 0x03FAEA02, 0x28F10814, 0x0F2B080B);
	r5 = D(r5, s0_0_0, 0xFB0506FF, 0x00090701, 0xFEF7FA02, 0xFF050202);
	r6 = D(r6, s0_0_0, 0x0C04ED14, 0x0AFDF706, 0x0300F900, 0x0507F909);
	r7 = D(r7, s0_0_0, 0x0205EDF0, 0xFFF5F719, 0x0BECF300, 0xFB00F601);
	r0 = D(r0, s0_0_1, 0x2DFD0B02, 0x2405D206, 0x04FE1906, 0xED03E118);
	r1 = D(r1, s0_0_1, 0xF1FA1803, 0x0CECFF06, 0xFDFFCA08, 0xFDECEC0B);
	r2 = D(r2, s0_0_1, 0xD6FCFCFE, 0x2701F715, 0x171921FC, 0xFEFCF202);
	r3 = D(r3, s0_0_1, 0xF5FC0205, 0x05FD0C05, 0xD701F301, 0x04FEEF03);
	r4 = D(r4, s0_0_1, 0x0C04050A, 0x12CC0005, 0xF113BD13, 0x04CE0607);
	r5 = D(r5, s0_0_1, 0xF3FC1400, 0x10FA0504, 0xFF040DFE, 0xFAF0DBFE);
	r6 = D(r6, s0_0_1, 0xF4050E1C, 0xF803F7FE, 0x02010C0E, 0xF7FAEE02);
	r7 = D(r7, s0_0_1, 0x100031F1, 0x12149014, 0x06031404, 0xFEF80602);
	r0 = D(r0, s0_0_2, 0x0FF900FE, 0x0402F8FF, 0x0202FC00, 0xEB0C000F);
	r1 = D(r1, s0_0_2, 0xF6FDF303, 0x04010002, 0x06F80306, 0x16001A05);
	r2 = D(r2, s0_0_2, 0xFAFDE700, 0x0306DE17, 0x01EBFCF2, 0x06010501);
	r3 = D(r3, s0_0_2, 0x03F80B01, 0x03F71202, 0x04FF0300, 0xFEFE0101);
	r4 = D(r4, s0_0_2, 0xE5FCDD02, 0x08F9F205, 0x2CF6EDFA, 0xEC0AD2FE);
	r5 = D(r5, s0_0_2, 0x00010201, 0x0B08DF0D, 0x02FDF705, 0x00000A01);
	r6 = D(r6, s0_0_2, 0x08FD0415, 0x03FEEE01, 0x05FE0808, 0x16FCF9FC);
	r7 = D(r7, s0_0_2, 0x2002F8F6, 0xFC05F506, 0x0B01F7FE, 0x02020202);
	r0 = D(r0, s0_1_0, 0x0408FD04, 0x01170007, 0x09A1ECF2, 0xFDF70406);
	r1 = D(r1, s0_1_0, 0x0600FA07, 0x071B0113, 0xFFE90005, 0x06D51004);
	r2 = D(r2, s0_1_0, 0x0215FA04, 0x0028EE0C, 0x0E0802E8, 0x0C0D0408);
	r3 = D(r3, s0_1_0, 0xFE070000, 0x02060203, 0x0BFB0303, 0xFF1A0B0A);
	r4 = D(r4, s0_1_0, 0xFD0C0102, 0xF4061005, 0x0A0DE6F0, 0x07E2F60A);
	r5 = D(r5, s0_1_0, 0x08FDEF02, 0xFA0DFD02, 0x03160503, 0xFF020000);
	r6 = D(r6, s0_1_0, 0x03110D0F, 0xFD21ED09, 0xE516E7FB, 0x04150502);
	r7 = D(r7, s0_1_0, 0xFE040501, 0xF022E31C, 0x0405FD06, 0xEE2E0505);
	r0 = D(r0, s0_1_1, 0xF019FAFE, 0xF3050505, 0xF6CB0C0B, 0xF2E2F0CA);
	r1 = D(r1, s0_1_1, 0x1BFF0000, 0xF107000A, 0xF8120E09, 0x130F0A00);
	r2 = D(r2, s0_1_1, 0xEFE40A12, 0xEE320528, 0xA9D80CE1, 0x180EF007);
	r3 = D(r3, s0_1_1, 0x0B1EF80B, 0xF31AF705, 0x02080F06, 0xF8E4F6FF);
	r4 = D(r4, s0_1_1, 0xFA28FA0F, 0x131EF614, 0xCCEEC9E8, 0xD5D50309);
	r5 = D(r5, s0_1_1, 0xE1FEFB11, 0x0D1B020B, 0xE0E5F00D, 0xF7F70F10);
	r6 = D(r6, s0_1_1, 0xDD17EA16, 0xD0E6F203, 0x1610F406, 0xF81CD600);
	r7 = D(r7, s0_1_1, 0xEA172BC5, 0xF01FE510, 0x0111F6FE, 0x1B00BC0D);
	r0 = D(r0, s0_1_2, 0xEA16FD07, 0x0107FB04, 0x020700FC, 0xF306FE18);
	r1 = D(r1, s0_1_2, 0x0CFF0307, 0x02010102, 0xF901FA04, 0x00FEE804);
	r2 = D(r2, s0_1_2, 0x0605F900, 0xF90FEE13, 0x0B000DEB, 0xFA03F704);
	r3 = D(r3, s0_1_2, 0xF8F90008, 0xF7F5F809, 0x02FFFC06, 0x00FE0000);
	r4 = D(r4, s0_1_2, 0xFCE802FA, 0xF7F50205, 0xFE23EAFB, 0x2F10060B);
	r5 = D(r5, s0_1_2, 0x0201FFFE, 0x19100805, 0x05FC0202, 0x04F5F506);
	r6 = D(r6, s0_1_2, 0x03EEF41D, 0x02FBF9FE, 0x0DF8F60E, 0x01F6F709);
	r7 = D(r7, s0_1_2, 0xF7FBEFFC, 0x020A0001, 0x0B0901FC, 0xFF000100);
	r0 = D(r0, s0_2_0, 0x00010106, 0x00FCF701, 0xFC000600, 0xFC120E0F);
	r1 = D(r1, s0_2_0, 0xFE03F200, 0x01D90001, 0xFF000505, 0x0B011908);
	r2 = D(r2, s0_2_0, 0x01FA0003, 0x000CF612, 0xFC1F06F3, 0xFE0CF802);
	r3 = D(r3, s0_2_0, 0x00000101, 0xFFFD0000, 0xFE00FE04, 0xFFF9FF02);
	r4 = D(r4, s0_2_0, 0x01FEFF00, 0x00EA0103, 0xF9FB0B05, 0x00DBD801);
	r5 = D(r5, s0_2_0, 0x00FF0B02, 0xFB00FE02, 0xFBD20304, 0xFFF6FF02);
	r6 = D(r6, s0_2_0, 0x04F2FF15, 0x00F0F109, 0xFEFD0C01, 0xFFFCFB03);
	r7 = D(r7, s0_2_0, 0xFDF400FB, 0x0A0A0806, 0xFEF90102, 0xFFF902FF);
	r0 = D(r0, s0_2_1, 0x06FA0207, 0x0105FE04, 0x03080005, 0xFFFA0A13);
	r1 = D(r1, s0_2_1, 0xFB080604, 0x01000201, 0x02F500FF, 0xF1200605);
	r2 = D(r2, s0_2_1, 0x0526F106, 0xFC060211, 0xF9010EF5, 0x01060601);
	r3 = D(r3, s0_2_1, 0x00E9FB04, 0x02F80104, 0x021FFA05, 0x00150003);
	r4 = D(r4, s0_2_1, 0x0109F601, 0x00F700FD, 0x0AE20507, 0x022A04FC);
	r5 = D(r5, s0_2_1, 0xFEF10004, 0x0008F804, 0x072BFA07, 0xFF01F708);
	r6 = D(r6, s0_2_1, 0x0408FF14, 0x0704F60D, 0xFEEE0705, 0x030CFC02);
	r7 = D(r7, s0_2_1, 0x010507F9, 0xF70E0B0A, 0x03F90102, 0xF912FD06);
	r0 = D(r0, s0_2_2, 0xFF060004, 0x00040001, 0xFD01FF02, 0x090E0113);
	r1 = D(r1, s0_2_2, 0xF91FFB03, 0xFD040002, 0x03030001, 0xFCB8FA03);
	r2 = D(r2, s0_2_2, 0xFE0DFF01, 0x0514FF11, 0x04E207E4, 0xFF090106);
	r3 = D(r3, s0_2_2, 0xFF12FE01, 0xFF1C0001, 0x000600FF, 0x00030000);
	r4 = D(r4, s0_2_2, 0x010A0007, 0xFFFF0006, 0xFF0F0410, 0x04DBFEFD);
	r5 = D(r5, s0_2_2, 0x0006FF00, 0xF90F0306, 0xFAFE0008, 0x01FFFF05);
	r6 = D(r6, s0_2_2, 0xFE12FE19, 0xFF040001, 0x0814010B, 0xFF08F902);
	r7 = D(r7, s0_2_2, 0x010EFBFB, 0xFC01FA06, 0x00080203, 0x00020000);
	r0 = D(r0, s1_0_0, 0x03FCFFFF, 0x00FF0103, 0x14FFF80A, 0x12F30002);
	r1 = D(r1, s1_0_0, 0xFE0302FE, 0x0ADC01FD, 0xFAF9FE04, 0xFEF0F80B);
	r2 = D(r2, s1_0_0, 0x040200FF, 0x0BF70805, 0xFE030203, 0x03F9FC01);
	r3 = D(r3, s1_0_0, 0xFE01FF01, 0x02000001, 0xFF01FF01, 0x060401FE);
	r4 = D(r4, s1_0_0, 0x040202FF, 0x09000008, 0xF8F9F725, 0x00DF090C);
	r5 = D(r5, s1_0_0, 0x03FEFF00, 0x00FC0002, 0x0501FFFE, 0x01FF0000);
	r6 = D(r6, s1_0_0, 0x14EA07FC, 0x04FF00FA, 0xFB16FBFB, 0x05FA0001);
	r7 = D(r7, s1_0_0, 0xFDF8FA03, 0x1CE80205, 0x0A00FEFF, 0x040200FD);
	r0 = D(r0, s1_0_1, 0xF403F6F4, 0xF304F704, 0x28E8F321, 0xE707F9FC);
	r1 = D(r1, s1_0_1, 0x06F8FE04, 0x07F9F400, 0xFCFAFEFF, 0x09F4F009);
	r2 = D(r2, s1_0_1, 0x00FD0201, 0x07D5FEFB, 0xC81AEE10, 0x0606FAFC);
	r3 = D(r3, s1_0_1, 0x02FFFD00, 0xF7FBFE00, 0x09070001, 0x010B0405);
	r4 = D(r4, s1_0_1, 0x08D4100B, 0x103002FC, 0xF8D6F118, 0x11F5EF1E);
	r5 = D(r5, s1_0_1, 0xE9FFFD00, 0x10FCFEFB, 0xFD1803F7, 0x0400FFFE);
	r6 = D(r6, s1_0_1, 0x19E3090C, 0xF8F402FD, 0xFAD5FF11, 0x0CDFF008);
	r7 = D(r7, s1_0_1, 0x03E0FA0A, 0x09C4EF02, 0x06E40403, 0x0909FCFF);
	r0 = D(r0, s1_0_2, 0x09F20008, 0x020406FF, 0x0002F90A, 0xFDF40505);
	r1 = D(r1, s1_0_2, 0x010703FC, 0x0602FE00, 0x0003FA05, 0xEBF5F80F);
	r2 = D(r2, s1_0_2, 0x07FF0302, 0x07040502, 0xF6E4EE00, 0x03FB0007);
	r3 = D(r3, s1_0_2, 0x0808F902, 0x06ECFB00, 0x00050102, 0xFE040100);
	r4 = D(r4, s1_0_2, 0x03EEFDF2, 0x03F5F307, 0x0FAF0005, 0x10D3FEF5);
	r5 = D(r5, s1_0_2, 0x01FFFEFF, 0x080AFF07, 0x0607FE04, 0xF705FE00);
	r6 = D(r6, s1_0_2, 0x16F2FD05, 0xFFFC02FE, 0x10ED0004, 0xFEFCF409);
	r7 = D(r7, s1_0_2, 0xF33DF308, 0x09DCF706, 0x04EF0BFF, 0x0505FF00);
	r0 = D(r0, s1_1_0, 0x00FCF901, 0xFE0002FE, 0xFBFD07F5, 0x0FF7040C);
	r1 = D(r1, s1_1_0, 0x0002FDFF, 0xF702FCF0, 0x04FCFCFE, 0xECF6FC06);
	r2 = D(r2, s1_1_0, 0xFE01FFFF, 0x03F70B06, 0xF2FAF3FE, 0xFD05FD01);
	r3 = D(r3, s1_1_0, 0x01FFFFFF, 0xFE0000FF, 0xFF0100FF, 0xFC0100F7);
	r4 = D(r4, s1_1_0, 0x00FFFAFF, 0xF805FBFE, 0x0AADF1EF, 0xF7EB0609);
	r5 = D(r5, s1_1_0, 0xFE000001, 0xFD03FDFF, 0x02FC0001, 0xFF0001FE);
	r6 = D(r6, s1_1_0, 0x020408EA, 0xFCFCFFF7, 0x0DE5F200, 0x06FC0403);
	r7 = D(r7, s1_1_0, 0xFF02F6FF, 0xC9040201, 0x05F9FAFA, 0x0401FFF9);
	r0 = D(r0, s1_1_1, 0x0DFB0DFF, 0x0000ED09, 0x080B2AF0, 0xF5E98181);
	r1 = D(r1, s1_1_1, 0xFFFA0210, 0xFFFFF304, 0xF305DCF7, 0x0AC7F8E9);
	r2 = D(r2, s1_1_1, 0x0D0108FD, 0xE703FDF9, 0xEDF8C7F4, 0xE7E5E808);
	r3 = D(r3, s1_1_1, 0xF400FCFB, 0x01020002, 0x0DFFF404, 0x06002213);
	r4 = D(r4, s1_1_1, 0x00FF130D, 0xF203ED1C, 0x0D12E9E7, 0x0E13E914);
	r5 = D(r5, s1_1_1, 0x0602F020, 0xD801FEF0, 0x050CFA0C, 0x01FDFEEB);
	r6 = D(r6, s1_1_1, 0x08F3101C, 0x180434F8, 0xD9FF1A1B, 0xF9FA0310);
	r7 = D(r7, s1_1_1, 0x09021715, 0xD228E1D9, 0xFDF63311, 0xDAFF180E);
	r0 = D(r0, s1_1_2, 0x0C05F4F7, 0xFF00F803, 0xFF0CEF1F, 0x02FF17FF);
	r1 = D(r1, s1_1_2, 0x0303F7F6, 0xFF020002, 0x08FBF601, 0xF3CBFB02);
	r2 = D(r2, s1_1_2, 0xFF03F4E4, 0x000007E3, 0xF6EC18E5, 0x05FBF403);
	r3 = D(r3, s1_1_2, 0x0501EA01, 0xFE03EEF0, 0x0102FB01, 0x0002FD00);
	r4 = D(r4, s1_1_2, 0x11031FDB, 0x0401FFFE, 0x061FF0F8, 0xF2D6E5F0);
	r5 = D(r5, s1_1_2, 0xFB000002, 0xE5FF0EF1, 0x03FEF8FE, 0x05FFF803);
	r6 = D(r6, s1_1_2, 0x05FAF41A, 0xFDF901F4, 0x04FBFA04, 0x09F3E01E);
	r7 = D(r7, s1_1_2, 0x0EF9A023, 0x000603FD, 0x00FB08F4, 0x0103FB01);
	r0 = D(r0, s1_2_0, 0x00FD03FF, 0x0000FF02, 0x0408FDF8, 0x02F90004);
	r1 = D(r1, s1_2_0, 0x00FEFDFF, 0xFEFDFE05, 0xFEFEFA02, 0x06EFFA0B);
	r2 = D(r2, s1_2_0, 0xFE000000, 0x02F4FF02, 0xF603FF05, 0x03F8FB07);
	r3 = D(r3, s1_2_0, 0x01000001, 0xFF000000, 0xFDFF00FE, 0x00000003);
	r4 = D(r4, s1_2_0, 0x00FE01FF, 0x00FF0001, 0x0402F70A, 0x0602FD00);
	r5 = D(r5, s1_2_0, 0xFEFF0101, 0x0303FF03, 0xFE03FB00, 0x00000001);
	r6 = D(r6, s1_2_0, 0x06EC00FE, 0x0000FDFD, 0xFD08F1FA, 0x01FA0104);
	r7 = D(r7, s1_2_0, 0xFA02FDF8, 0xFCFEF313, 0x030002FD, 0xFF01FFFF);
	r0 = D(r0, s1_2_1, 0x0002FFFF, 0x0101FB03, 0x0103FA09, 0xFEFFF1FA);
	r1 = D(r1, s1_2_1, 0xFF0305F8, 0xFF02FC02, 0xFF00F9FE, 0x01FBF61A);
	r2 = D(r2, s1_2_1, 0xFB00FB08, 0x00F5FD05, 0x01FAF90A, 0x0204F9FC);
	r3 = D(r3, s1_2_1, 0xFFFFF805, 0x0100FA03, 0xFD00F706, 0x00000203);
	r4 = D(r4, s1_2_1, 0xFFFDFF06, 0xFE0102F9, 0xFD06DB1B, 0xFC06E828);
	r5 = D(r5, s1_2_1, 0x0200F805, 0x04030101, 0xF30000FE, 0xFCFF0201);
	r6 = D(r6, s1_2_1, 0x02EA0313, 0x01FEF307, 0xFAF71327, 0x00F9FB09);
	r7 = D(r7, s1_2_1, 0x01FDED04, 0xF504ED09, 0x03FB0605, 0x01010206);
	r0 = D(r0, s1_2_2, 0xFF03F405, 0x0001FF02, 0xFFFDF702, 0x06F70000);
	r1 = D(r1, s1_2_2, 0x0A00F306, 0x0101FDFF, 0x02FC0006, 0xFFE4DC09);
	r2 = D(r2, s1_2_2, 0xFB0107FC, 0x0CFAF305, 0x020EFFFF, 0x03FFF90A);
	r3 = D(r3, s1_2_2, 0x0000F700, 0x0100F505, 0xFD01FE00, 0x0000FEFF);
	r4 = D(r4, s1_2_2, 0x02FF05FF, 0x0303FD00, 0x0207BF2E, 0x09FBFAF3);
	r5 = D(r5, s1_2_2, 0x00FFF904, 0x0505F101, 0x0103FEFD, 0xFE00FBFB);
	r6 = D(r6, s1_2_2, 0x07F2F90A, 0x02FF0303, 0x00FCF707, 0x04FDF802);
	r7 = D(r7, s1_2_2, 0x00F6E60D, 0xFF01F909, 0x03FE0300, 0x0000FAFF);
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFCFFFF03, 0xEDFDFC01, 0x201BF3FF, 0xF9FDFBF6);
	r1 = D(r1, s0_0_0, 0x04000101, 0x1701E500, 0xEEF00BFD, 0xF2001101);
	r2 = D(r2, s0_0_0, 0x0002FEFF, 0x0502FAF9, 0x00050802, 0xF7050301);
	r3 = D(r3, s0_0_0, 0x02000000, 0x0301FFFF, 0x00000100, 0x0000FB00);
	r4 = D(r4, s0_0_0, 0x000500FC, 0x0604F201, 0x21F824F7, 0x1E15F901);
	r5 = D(r5, s0_0_0, 0xFF070100, 0xFE050001, 0x030304FF, 0x0003FF00);
	r6 = D(r6, s0_0_0, 0x17FDFD00, 0x09FF0100, 0xFEF40706, 0xFD04FFFF);
	r7 = D(r7, s0_0_0, 0x050F00FB, 0xAEF8E1FC, 0x0501FB00, 0xFD010000);
	r0 = D(r0, s0_0_1, 0x110408FE, 0xF503FFFE, 0xC41502F9, 0x25FE0100);
	r1 = D(r1, s0_0_1, 0xDEFFFFFB, 0xF3000AFD, 0x1E0EFF00, 0x2A20F7F9);
	r2 = D(r2, s0_0_1, 0xF1FFFF00, 0x1EF20805, 0x0E170902, 0x1903F5FA);
	r3 = D(r3, s0_0_1, 0x0009FB00, 0x000BFBFF, 0x0D02FF00, 0x0EFF0201);
	r4 = D(r4, s0_0_1, 0x0009FFFE, 0xF1FA0100, 0x0D25E606, 0x210DFCF4);
	r5 = D(r5, s0_0_1, 0x04FDFFFF, 0xFDFAF601, 0x09040602, 0x09FE0300);
	r6 = D(r6, s0_0_1, 0x0E13D3FC, 0x09070002, 0x2612E3FD, 0xF8FDE6FF);
	r7 = D(r7, s0_0_1, 0x6CF7F1FB, 0x08E8F307, 0x00F9F1FC, 0x06FEFC00);
	r0 = D(r0, s0_0_2, 0xF70AFAFA, 0xFCFF0100, 0x03030001, 0x0A01FBF7);
	r1 = D(r1, s0_0_2, 0x0600FEFD, 0x0001FC02, 0xF8FFFDFB, 0xF7F607F7);
	r2 = D(r2, s0_0_2, 0x04FFFF00, 0x0605FAFB, 0x0E040305, 0xF70101FF);
	r3 = D(r3, s0_0_2, 0xF5F900FE, 0xEFF9FAFF, 0xF9FFFF00, 0x01FF0001);
	r4 = D(r4, s0_0_2, 0x1BFE0704, 0x070500FE, 0x18120AEF, 0x2903060C);
	r5 = D(r5, s0_0_2, 0x02010100, 0x0BFBFA01, 0x0800FE00, 0xE8FF0000);
	r6 = D(r6, s0_0_2, 0xE50201FD, 0x02FFFDFE, 0xF40703FF, 0xD70108F7);
	r7 = D(r7, s0_0_2, 0xE80601FC, 0x05FD05FF, 0x050002FE, 0xFE010100);
	r0 = D(r0, s0_1_0, 0x02040005, 0x07FAF400, 0xFC0CE918, 0x060504F6);
	r1 = D(r1, s0_1_0, 0xF90208FD, 0x01F6FE2F, 0x02F0CAFA, 0xEDE91013);
	r2 = D(r2, s0_1_0, 0x07FDFFFE, 0xFFDE07F7, 0x04F203FF, 0xE7E30105);
	r3 = D(r3, s0_1_0, 0xFD0103FF, 0x01000500, 0x05F202FE, 0xFD0305FA);
	r4 = D(r4, s0_1_0, 0x02FE0AF8, 0x01FAFF07, 0x13E4EB02, 0x0AFD040B);
	r5 = D(r5, s0_1_0, 0x0A08EBFF, 0x00020A03, 0x03050E04, 0x02FF0702);
	r6 = D(r6, s0_1_0, 0xF712FC0A, 0x0A020EFB, 0x1100F507, 0x0502FF01);
	r7 = D(r7, s0_1_0, 0x08022401, 0xEAF11822, 0x08010B04, 0xFAFD0902);
	r0 = D(r0, s0_1_1, 0x00C5D819, 0xFE04F41B, 0x01ECF41D, 0xFB061381);
	r1 = D(r1, s0_1_1, 0x0DFF1BFC, 0x01ED0D0F, 0xFD1FF115, 0x1E27D708);
	r2 = D(r2, s0_1_1, 0xF5F405FE, 0xEB0CFEEA, 0x242B141E, 0x05161107);
	r3 = D(r3, s0_1_1, 0x03F50304, 0x03D7E004, 0xF31508FE, 0xFA09FE04);
	r4 = D(r4, s0_1_1, 0xF6FAEA02, 0xFC170D38, 0xB2DE152E, 0x0240E2E0);
	r5 = D(r5, s0_1_1, 0xD4EEDC02, 0xFCFF0D0A, 0xEFE3D9FF, 0x0C13E805);
	r6 = D(r6, s0_1_1, 0x0603EE3A, 0xEB04E3F9, 0x171AFAFF, 0x00161423);
	r7 = D(r7, s0_1_1, 0xF3463307, 0xFBF91310, 0x07F9180D, 0xF51201FE);
	r0 = D(r0, s0_1_2, 0xFD070B0D, 0xFF0204FF, 0xFBFBFFFC, 0xFE1F13EE);
	r1 = D(r1, s0_1_2, 0xF40AFDFC, 0x010007FD, 0x0402F9FA, 0x0B03F0F2);
	r2 = D(r2, s0_1_2, 0xFEFE0600, 0x061AF8FB, 0xF71E1DFD, 0x03FC05FF);
	r3 = D(r3, s0_1_2, 0xF9F801FB, 0xFFFD0AF8, 0xFFF9FEFF, 0x000101FF);
	r4 = D(r4, s0_1_2, 0xF81304EF, 0xFFFF0B00, 0xDCF3E61A, 0xF80E1DFC);
	r5 = D(r5, s0_1_2, 0x0201FD02, 0x010B110C, 0xFF060803, 0xFFECF001);
	r6 = D(r6, s0_1_2, 0xEFD900FB, 0x010106FB, 0x07F40709, 0xFDDFF7FB);
	r7 = D(r7, s0_1_2, 0x05F30000, 0xFAFCFDFA, 0x01030603, 0x01FD05FF);
	r0 = D(r0, s0_2_0, 0x01FD04FB, 0x000000FF, 0x040205FB, 0xFA00FFFA);
	r1 = D(r1, s0_2_0, 0xFFFFFE02, 0x0202FDF9, 0x02FCFA03, 0xFC00F70E);
	r2 = D(r2, s0_2_0, 0xFF0100FE, 0xFDFBFAF9, 0x030904F6, 0x020801FF);
	r3 = D(r3, s0_2_0, 0x000002FE, 0xFF010001, 0x01F9FEFE, 0x00FFFE02);
	r4 = D(r4, s0_2_0, 0xFEFF0002, 0xFF01FF07, 0xFB0906E4, 0x080A06FD);
	r5 = D(r5, s0_2_0, 0x04FF01FE, 0x0200F801, 0xFDFDFB01, 0x0000FF02);
	r6 = D(r6, s0_2_0, 0xF90AFF05, 0x050701FA, 0x0DF9040E, 0x000102FD);
	r7 = D(r7, s0_2_0, 0x04020304, 0x030912FC, 0x04FFFFFE, 0x00010304);
	r0 = D(r0, s0_2_1, 0x02FC01ED, 0x01000501, 0x00FF0724, 0x02FC00E1);
	r1 = D(r1, s0_2_1, 0xFCFBFE06, 0x02080003, 0x040904EA, 0x0C1D06E8);
	r2 = D(r2, s0_2_1, 0xFE0803F7, 0x030ADCF4, 0x0400FE00, 0x04FBE5E7);
	r3 = D(r3, s0_2_1, 0x03FDFCF4, 0x0101FCFC, 0x01010306, 0x0005FF01);
	r4 = D(r4, s0_2_1, 0x030602E9, 0xFFFFFAF6, 0x010902A8, 0xF214F9ED);
	r5 = D(r5, s0_2_1, 0x01F20426, 0x02D9E300, 0x01150501, 0x00F4FA0D);
	r6 = D(r6, s0_2_1, 0x06FE09FB, 0x060612E8, 0x05F5F1F6, 0xFF0101EF);
	r7 = D(r7, s0_2_1, 0x0B1B12F9, 0x040AF60C, 0x01FBF4E9, 0xFF03CFE5);
	r0 = D(r0, s0_2_2, 0x02010004, 0x00FF0103, 0x0001FCFA, 0x01F7FAFF);
	r1 = D(r1, s0_2_2, 0x01F8F70B, 0x00FFFD00, 0x0100FE01, 0x01040613);
	r2 = D(r2, s0_2_2, 0xFFFFF8FB, 0xFEF704FB, 0xFB1A0C05, 0x00030202);
	r3 = D(r3, s0_2_2, 0xFF02FE00, 0xFF00FD00, 0x01FBFEFE, 0x00FFFE00);
	r4 = D(r4, s0_2_2, 0xFE04FFFD, 0x00060004, 0x0D0A28E3, 0xFE2604F1);
	r5 = D(r5, s0_2_2, 0x000404FF, 0x010BE506, 0x01FFFE04, 0xFF020604);
	r6 = D(r6, s0_2_2, 0xFD03FB02, 0x000500EC, 0xFF06F905, 0xFE05FBFC);
	r7 = D(r7, s0_2_2, 0x0604180C, 0x000605F5, 0x0002FAFD, 0x00FF0202);
	r0 = D(r0, s1_0_0, 0xFEFFFBFE, 0x0105FBFE, 0xF410FAFD, 0xF407EA04);
	r1 = D(r1, s1_0_0, 0x000001FD, 0xFCF5FE01, 0xF502F9FD, 0xF808F100);
	r2 = D(r2, s1_0_0, 0x00FF0000, 0xF50DE6FE, 0xFAFC0102, 0xFD06F9FC);
	r3 = D(r3, s1_0_0, 0xFF01FD00, 0x0002FF00, 0x0000FF00, 0x00FC0101);
	r4 = D(r4, s1_0_0, 0x0200FD01, 0xFFFBFEFF, 0x0DF504FE, 0xF701F901);
	r5 = D(r5, s1_0_0, 0xFF0100FF, 0xFE02FCFE, 0x00FCFE01, 0x0000FD00);
	r6 = D(r6, s1_0_0, 0x010FF501, 0xFEFC0101, 0xFC0705FC, 0xFEFFFCFC);
	r7 = D(r7, s1_0_0, 0xF908FDFF, 0xF42EE4FC, 0x020BFDFE, 0x0002FE00);
	r0 = D(r0, s1_0_1, 0x0CECFCFE, 0x0BF3F801, 0xD8F604F5, 0xEDFCEE01);
	r1 = D(r1, s1_0_1, 0x0309F901, 0x06FE05FD, 0xFF07F8FD, 0x0505EEFF);
	r2 = D(r2, s1_0_1, 0x0100FF00, 0xFC0AE6F3, 0x0FFC0AFE, 0x0A01FD03);
	r3 = D(r3, s1_0_1, 0x0002FDFE, 0xFBFCFEFF, 0x0001FD00, 0xFB01FFFF);
	r4 = D(r4, s1_0_1, 0xF7FAF900, 0xFAFEFD00, 0xFDFE000E, 0xEE03F405);
	r5 = D(r5, s1_0_1, 0xFFFFFF01, 0x060AFC01, 0x02FDFF01, 0xFFFE0001);
	r6 = D(r6, s1_0_1, 0xEF18F3F6, 0xF5010000, 0x0004FBFD, 0x1410FFF9);
	r7 = D(r7, s1_0_1, 0xEA06F301, 0xF919F3FE, 0x01000001, 0xFF00FFFF);
	r0 = D(r0, s1_0_2, 0xF7FC01FE, 0xFCFF00FF, 0xFCFD0500, 0xEF0DED04);
	r1 = D(r1, s1_0_2, 0xFB04FDFF, 0xFF0100FD, 0x02FDFFFE, 0xE40A00FF);
	r2 = D(r2, s1_0_2, 0x00FEFF00, 0xE70EE101, 0xFC05FEFD, 0xFF0101FF);
	r3 = D(r3, s1_0_2, 0x02FC0200, 0x07000000, 0xFF01FF00, 0x00FFFE00);
	r4 = D(r4, s1_0_2, 0xF806FBFF, 0x01FD05FC, 0xE40401FC, 0xF7F40CFD);
	r5 = D(r5, s1_0_2, 0xFF010000, 0xF809F6FF, 0x0000FD00, 0x01FD0100);
	r6 = D(r6, s1_0_2, 0xFA06EE01, 0xFC00FF01, 0xFA05FF00, 0xF7F70704);
	r7 = D(r7, s1_0_2, 0xF1F60500, 0x0004FB01, 0xF50BFEFE, 0xFFFE0001);
	r0 = D(r0, s1_1_0, 0x020206F4, 0xFD0102FC, 0xFC26F9E9, 0x00EFF7FE);
	r1 = D(r1, s1_1_0, 0xFD0DFEF7, 0xF8060A0C, 0xF20208F8, 0xF7FEFAF4);
	r2 = D(r2, s1_1_0, 0x01010102, 0xF40FEF09, 0x080D07E3, 0xF2F0FFF5);
	r3 = D(r3, s1_1_0, 0xFF00FF00, 0xFFFF0101, 0x00FE0401, 0x000E0206);
	r4 = D(r4, s1_1_0, 0x0307FE04, 0xFF03FF07, 0xEC211403, 0x02FBFAFC);
	r5 = D(r5, s1_1_0, 0xFE0806FD, 0x03FA00FD, 0x01FEFC05, 0x00030000);
	r6 = D(r6, s1_1_0, 0x0805E900, 0x0214FA0A, 0x0720F700, 0xFB01FFF4);
	r7 = D(r7, s1_1_0, 0xFDF406F4, 0xE0F21FC8, 0x00FCFFF1, 0x00FC0303);
	r0 = D(r0, s1_1_1, 0xD52D1DE5, 0xED131605, 0xE6B8FF15, 0x16F0112A);
	r1 = D(r1, s1_1_1, 0xE4021400, 0xF2F70213, 0x30131317, 0x01FA26FA);
	r2 = D(r2, s1_1_1, 0xF5D21901, 0x21FD05FB, 0x140C4001, 0x21170CF9);
	r3 = D(r3, s1_1_1, 0xF4E50DFB, 0xF40A16F7, 0xF1081A01, 0xDC0706FA);
	r4 = D(r4, s1_1_1, 0xEF052321, 0xFAFC0F0D, 0xC20E2C05, 0x080321F7);
	r5 = D(r5, s1_1_1, 0x25121101, 0xEC1C12FB, 0xF9F701FF, 0xFFFF1401);
	r6 = D(r6, s1_1_1, 0xF1FF1FE2, 0xDA152EFF, 0xB30E1CF7, 0xEC0A22E4);
	r7 = D(r7, s1_1_1, 0x81101381, 0xE202F0FE, 0xD60919E0, 0xF5F6F800);
	r0 = D(r0, s1_1_2, 0xEAFD10FC, 0xFC0101FF, 0x0CFE0101, 0xCA08E807);
	r1 = D(r1, s1_1_2, 0x010C03F5, 0xFF02FDFF, 0x04FD0305, 0xEC04FEF7);
	r2 = D(r2, s1_1_2, 0xF9FCFC01, 0xFF0CE506, 0xBE0C05F4, 0xFBF802FE);
	r3 = D(r3, s1_1_2, 0x2CF0FB04, 0x25F3FA04, 0x04FFFF00, 0x02000001);
	r4 = D(r4, s1_1_2, 0xD810F3FB, 0xF901FC04, 0xED0B12D3, 0xE204FFEA);
	r5 = D(r5, s1_1_2, 0xF8FF0100, 0xE001F9FE, 0xFAFB0100, 0xFDFB0201);
	r6 = D(r6, s1_1_2, 0x0FE8F6F9, 0xF9080101, 0xFA01FAEF, 0x28ED00F7);
	r7 = D(r7, s1_1_2, 0x16F60DF2, 0xF2020008, 0xE70BFDF3, 0x02FEFF01);
	r0 = D(r0, s1_2_0, 0xFF03F902, 0x02FE01FF, 0xF7FE07F3, 0xF603F7FE);
	r1 = D(r1, s1_2_0, 0xFF0502FB, 0xFD0103EE, 0xFBFF0206, 0xF9FF06EA);
	r2 = D(r2, s1_2_0, 0x00FAFE05, 0xF4FD01EC, 0xF80205D7, 0xF909FFF8);
	r3 = D(r3, s1_2_0, 0xFF010000, 0x0100FF00, 0x00FFFF07, 0x010300FD);
	r4 = D(r4, s1_2_0, 0x0000FF00, 0xFE0102F1, 0xF5E906F4, 0xFFF608FB);
	r5 = D(r5, s1_2_0, 0xFE070007, 0xFE0801FC, 0xFAFD01F9, 0x00FCFF00);
	r6 = D(r6, s1_2_0, 0xF403E70F, 0xFBF0010A, 0x091BF505, 0x0102FD00);
	r7 = D(r7, s1_2_0, 0xFAFA05FB, 0xF6E1F7F5, 0xFC0A00F8, 0x02F901FB);
	r0 = D(r0, s1_2_1, 0x03FBFEFF, 0x00FD00FE, 0xFAFB0015, 0xF706F8F7);
	r1 = D(r1, s1_2_1, 0x05150A11, 0xFC0002FB, 0x0501FDFC, 0x0EF118EB);
	r2 = D(r2, s1_2_1, 0x08EAFA30, 0xEB040027, 0xFAFBF888, 0x031201D3);
	r3 = D(r3, s1_2_1, 0xFCFD0304, 0x00000103, 0x0AF5FD2B, 0x00FF0000);
	r4 = D(r4, s1_2_1, 0x02FE02F4, 0xF70801F6, 0xF8EE0EF3, 0x02F105E3);
	r5 = D(r5, s1_2_1, 0x0204FEFE, 0xF70C0AC5, 0xFCFCFF18, 0xFAF90003);
	r6 = D(r6, s1_2_1, 0xF5F5F114, 0xFEF1FD16, 0xF80107D2, 0x010303F1);
	r7 = D(r7, s1_2_1, 0xF202FD2A, 0x02EFF712, 0xF90A00DC, 0xF9F81001);
	r0 = D(r0, s1_2_2, 0x03FF0000, 0x00000000, 0x0505FCFF, 0xEF04F003);
	r1 = D(r1, s1_2_2, 0xF0FB0A0E, 0xFE01FFFF, 0xFB01FEFE, 0xF910F5E4);
	r2 = D(r2, s1_2_2, 0x01FE0107, 0xF00FEFF2, 0x03FD05EA, 0x02FCFCF6);
	r3 = D(r3, s1_2_2, 0x0901FEF9, 0x00FF0000, 0x01FF0202, 0x01FF00FF);
	r4 = D(r4, s1_2_2, 0xF7FDFE0B, 0xFB00FFFF, 0x01E6030B, 0xE90CF8F1);
	r5 = D(r5, s1_2_2, 0xFCFE02FE, 0xEF00FCFF, 0xFDFEFD04, 0xFB01FD02);
	r6 = D(r6, s1_2_2, 0xFB0AEA06, 0xF6FF0308, 0x03FFF8EF, 0x00020000);
	r7 = D(r7, s1_2_2, 0xFAF901F7, 0xFD02F906, 0xFA06FDFB, 0x0200FDFE);
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFCFE0104, 0xFE080700, 0x01F1D7FF, 0xF5F605F7);
	r1 = D(r1, s0_0_0, 0x01050203, 0x05F4CEF3, 0xFEF71D04, 0x0AEF12FB);
	r2 = D(r2, s0_0_0, 0x00FEFBFF, 0xFCFC02FC, 0x01FFFB04, 0x0107FF00);
	r3 = D(r3, s0_0_0, 0xFF020300, 0xFFFE0100, 0x00000100, 0xFFFAF8FD);
	r4 = D(r4, s0_0_0, 0xFFFCF8FE, 0x05F8F702, 0x0FE80A0D, 0xFDF3FD02);
	r5 = D(r5, s0_0_0, 0x00050500, 0x03020302, 0x00FAF200, 0x00FFFB01);
	r6 = D(r6, s0_0_0, 0xF0EBF2F9, 0xFDFA0401, 0xFFFFF900, 0xF8080001);
	r7 = D(r7, s0_0_0, 0x0BFEFA08, 0xFD09AD01, 0x0400F9FF, 0x0000FD00);
	r0 = D(r0, s0_0_1, 0x000AE609, 0xFE2F1D01, 0xED1CD513, 0x03DCC213);
	r1 = D(r1, s0_0_1, 0xFF04F5FF, 0xF8F80814, 0x09F7F1FD, 0xFAF6E901);
	r2 = D(r2, s0_0_1, 0xFF0105FE, 0x040CFDE7, 0x17BDCC02, 0xFCFEE9FC);
	r3 = D(r3, s0_0_1, 0xFC04FBFA, 0x010202FF, 0x00010101, 0x010206FF);
	r4 = D(r4, s0_0_1, 0x0600EDFF, 0xEEFBCAF6, 0x10F1C4E2, 0x14FADF0D);
	r5 = D(r5, s0_0_1, 0xFF00FF00, 0x04FADAFC, 0x0CF7F9FC, 0x02FD0003);
	r6 = D(r6, s0_0_1, 0xE810D9FB, 0x030909FE, 0x00F9EEF3, 0xEA15BFF5);
	r7 = D(r7, s0_0_1, 0xF131EB09, 0x08FD0306, 0xF212DC01, 0xFD03F802);
	r0 = D(r0, s0_0_2, 0x0502E0D4, 0x0303FF02, 0x0802000C, 0xF6FDF701);
	r1 = D(r1, s0_0_2, 0xFF05FC0C, 0x03FC050A, 0x05FEFBFF, 0x0502120F);
	r2 = D(r2, s0_0_2, 0x00FF0003, 0xF403F4F4, 0x0DF709F8, 0xFE000301);
	r3 = D(r3, s0_0_2, 0xF7FFF2FA, 0xFDFDF8F6, 0x0001FE05, 0x000001F8);
	r4 = D(r4, s0_0_2, 0x01FD15E8, 0x07FA0D13, 0x1F0713EE, 0x16F734F2);
	r5 = D(r5, s0_0_2, 0x00FEFF04, 0x0108FC06, 0xFCFFF802, 0x02FFF400);
	r6 = D(r6, s0_0_2, 0xF7F5FEF5, 0x010207F2, 0x03FC11F6, 0xFA00F50D);
	r7 = D(r7, s0_0_2, 0xFFFEFC10, 0x06F91200, 0xFF04FF11, 0x00010203);
	r0 = D(r0, s0_1_0, 0x02FC04FE, 0x0B02F301, 0xD0FD11EF, 0x11FA04FA);
	r1 = D(r1, s0_1_0, 0xFE02F400, 0x1F0DE713, 0x0BF3F3F5, 0x1EF0070B);
	r2 = D(r2, s0_1_0, 0xF9F701FD, 0xF50D0A07, 0x0AFF160F, 0x0CFF0207);
	r3 = D(r3, s0_1_0, 0x02000302, 0x01FE0201, 0x02F9FB00, 0x0501FDF9);
	r4 = D(r4, s0_1_0, 0xFEF905FB, 0x060404FC, 0xECFC1222, 0xF5FD19F5);
	r5 = D(r5, s0_1_0, 0x0003F2FC, 0x060307FD, 0xE40313FB, 0xFD0104FE);
	r6 = D(r6, s0_1_0, 0x00EB0406, 0xFFF008FA, 0xF4F100FD, 0x060001FE);
	r7 = D(r7, s0_1_0, 0x0EFB010A, 0x180681F7, 0x01040204, 0xF20109FF);
	r0 = D(r0, s0_1_1, 0xF911EA16, 0xCD07DA44, 0xEBC12DE8, 0x1F3C0C05);
	r1 = D(r1, s0_1_1, 0x17C73CD1, 0x00FFFFD4, 0xF70700FD, 0xDBEE20CA);
	r2 = D(r2, s0_1_1, 0xFE030EF4, 0x0A050B2C, 0x262EF221, 0x1339EED2);
	r3 = D(r3, s0_1_1, 0x010602E5, 0x03FFE7F2, 0x09D61BD2, 0xF6FC01FB);
	r4 = D(r4, s0_1_1, 0xF617F5EB, 0x0707E617, 0xF6361A03, 0x04FBF014);
	r5 = D(r5, s0_1_1, 0xFC110217, 0x08330005, 0x06150B04, 0xCD242BEA);
	r6 = D(r6, s0_1_1, 0x0F01D4E9, 0xE6E01413, 0x0512F5FC, 0xFA14F2F6);
	r7 = D(r7, s0_1_1, 0x359C1573, 0xE4F1BC33, 0x182DE115, 0x0EFF09FD);
	r0 = D(r0, s0_1_2, 0xFBFE040F, 0xFEFD01F9, 0xFC07FFF8, 0xF6FFF7F6);
	r1 = D(r1, s0_1_2, 0x00F60811, 0x01FF02FA, 0x08FC02FE, 0x1513F60D);
	r2 = D(r2, s0_1_2, 0xF4FDF7F5, 0xFBFF00D3, 0xFEEF1829, 0xFF00FF03);
	r3 = D(r3, s0_1_2, 0x0A04FFF3, 0x0B00FF04, 0x01FF0606, 0x0300FEFE);
	r4 = D(r4, s0_1_2, 0xE4F100F7, 0x03FA05D5, 0xD40D1B09, 0xEA05ECFA);
	r5 = D(r5, s0_1_2, 0x040506FA, 0xFBF8F116, 0xFFF904FE, 0x0602152E);
	r6 = D(r6, s0_1_2, 0x04EFFF12, 0xF903120B, 0xFBF7FC13, 0x1002FEDA);
	r7 = D(r7, s0_1_2, 0x21EE1F01, 0xE804EFFF, 0xF9030415, 0x01000107);
	r0 = D(r0, s0_2_0, 0x0100FB02, 0xFF000001, 0xFD020301, 0xF60007FE);
	r1 = D(r1, s0_2_0, 0x03000102, 0xF9020406, 0x05020002, 0x0D05E907);
	r2 = D(r2, s0_2_0, 0x0000FFFF, 0x0403F5FB, 0x07FF110C, 0xE9FFFCF8);
	r3 = D(r3, s0_2_0, 0xFD0000FB, 0x0200FF01, 0xFD000103, 0xFE00FFFE);
	r4 = D(r4, s0_2_0, 0xFF000001, 0xFB010002, 0x2300F8E4, 0x100108F5);
	r5 = D(r5, s0_2_0, 0x0900FD05, 0x0100FD04, 0x02030006, 0x01010101);
	r6 = D(r6, s0_2_0, 0x00FFFCF4, 0x1102FAF8, 0x0CF80F02, 0xFC0001FF);
	r7 = D(r7, s0_2_0, 0x190403FE, 0x0A0601DF, 0x0301FA03, 0x0000FFFD);
	r0 = D(r0, s0_2_1, 0x06FF0201, 0xFEFE00FF, 0x00FBFFFC, 0x030401F2);
	r1 = D(r1, s0_2_1, 0xF7FDFE10, 0x01FF0207, 0x02FFFF01, 0xFAEBFEF6);
	r2 = D(r2, s0_2_1, 0x020001F8, 0xE2FCF7E9, 0xE6FC0F30, 0xF1FF0517);
	r3 = D(r3, s0_2_1, 0xE900FFF5, 0x00FE01FF, 0x05FFFFFC, 0xFEFF00FB);
	r4 = D(r4, s0_2_1, 0xF802FEF7, 0xFB020706, 0xF30802D6, 0x01FDF0DF);
	r5 = D(r5, s0_2_1, 0xFD0001F6, 0xD5FD08F9, 0xF102EDF1, 0x0C04F402);
	r6 = D(r6, s0_2_1, 0x0506F2F2, 0x0C04F9CC, 0xE402FBF1, 0xF6FF00FF);
	r7 = D(r7, s0_2_1, 0x0DFDFFF5, 0x08FE03EC, 0xF7010009, 0xDBFF00FA);
	r0 = D(r0, s0_2_2, 0xFFFB03F8, 0xFFFFFF00, 0x010200FE, 0xFB06F6FE);
	r1 = D(r1, s0_2_2, 0x02000200, 0x0001FFFD, 0xFF000304, 0xF2080AE9);
	r2 = D(r2, s0_2_2, 0xFEFFFBFB, 0xF6FE0210, 0x18EC1408, 0xFCFDFFF8);
	r3 = D(r3, s0_2_2, 0xF3FF00FE, 0xFD0001FE, 0xFFFFFEFC, 0xFFFF0002);
	r4 = D(r4, s0_2_2, 0xFF00FDFB, 0x00FEFFFD, 0xFEF8F8FD, 0x08FA0F20);
	r5 = D(r5, s0_2_2, 0x0001FE02, 0x0AF80B03, 0x00FD04FE, 0xFC01FFF5);
	r6 = D(r6, s0_2_2, 0x00FFFEE0, 0xFEFEFFFB, 0x04FB03FA, 0xFFFFFEFC);
	r7 = D(r7, s0_2_2, 0xF905FD0D, 0xFFFDFC0B, 0x030000FF, 0xFEFF01FD);
	r0 = D(r0, s1_0_0, 0x0602FB06, 0x02010002, 0x080ED400, 0x07060315);
	r1 = D(r1, s1_0_0, 0xFEFCFF07, 0xFC1D10EF, 0xFD030F11, 0x0D0C0901);
	r2 = D(r2, s1_0_0, 0x00010407, 0x0904FF10, 0xF7F91204, 0x00FD0203);
	r3 = D(r3, s1_0_0, 0xFE030208, 0x000200FE, 0x00FCFD01, 0xFF0408FC);
	r4 = D(r4, s1_0_0, 0xFB04FFFC, 0xFE040311, 0x02F70DFC, 0x1303EB04);
	r5 = D(r5, s1_0_0, 0xFFFCFBF8, 0xFFF9FF08, 0xFC010810, 0xFE0001FD);
	r6 = D(r6, s1_0_0, 0x12FE0EFF, 0xFA020BF0, 0x08FFF008, 0xFE0005EE);
	r7 = D(r7, s1_0_0, 0x04070211, 0xFBF5FF81, 0xFCF9F3F8, 0x01FB020C);
	r0 = D(r0, s1_0_1, 0xFB08F713, 0x00CF040D, 0x070A100A, 0xFF01FC26);
	r1 = D(r1, s1_0_1, 0x03010604, 0xF2F4F8DC, 0xFFE3F9F9, 0xFC121105);
	r2 = D(r2, s1_0_1, 0xFFFAFD0D, 0x020C1823, 0x0404FE21, 0x010A0BFC);
	r3 = D(r3, s1_0_1, 0x02FE0900, 0x010606FC, 0x00F8F90B, 0xFFF9F9FC);
	r4 = D(r4, s1_0_1, 0xF608FFF9, 0xF90EFBC7, 0x07D3DC0A, 0xD02323E7);
	r5 = D(r5, s1_0_1, 0xFFFCFDF0, 0x0000FAEF, 0x0102FC08, 0xFF01FF00);
	r6 = D(r6, s1_0_1, 0x0E01FC08, 0xFDF2F6F6, 0x001B0705, 0xF7FAFE08);
	r7 = D(r7, s1_0_1, 0xF23228F4, 0xFA1FF8C6, 0xFA0E0FFD, 0xFE0202F8);
	r0 = D(r0, s1_0_2, 0x02F3F60D, 0xFFFC0000, 0xFD05FB04, 0x02160803);
	r1 = D(r1, s1_0_2, 0x010D0606, 0xFF050302, 0xF700FE00, 0xFF02FCF7);
	r2 = D(r2, s1_0_2, 0x00030104, 0x02F60006, 0x040C0D02, 0xFF02FDFE);
	r3 = D(r3, s1_0_2, 0xFEFC01F7, 0xFDFB04F7, 0xFF01FF05, 0x00000100);
	r4 = D(r4, s1_0_2, 0xFCFC08FD, 0xF80005FB, 0xFFECF812, 0x02E3FE03);
	r5 = D(r5, s1_0_2, 0x000000FF, 0xFF0DFCF2, 0xFC080406, 0xFF00FFFF);
	r6 = D(r6, s1_0_2, 0x0912FC00, 0xFF0101F2, 0x0108FCFB, 0x0206FBFC);
	r7 = D(r7, s1_0_2, 0xFDFBF904, 0xFC0AFBF5, 0x00F5FBFD, 0xFF0000FB);
	r0 = D(r0, s1_1_0, 0x0402F111, 0x04FF00F5, 0x19F8FA14, 0x11060F1A);
	r1 = D(r1, s1_1_0, 0xFD03FF05, 0xE2EED8FB, 0xFF020708, 0x170E170C);
	r2 = D(r2, s1_1_0, 0xFE00FC05, 0x1A050E18, 0xF3120B20, 0xFD010D09);
	r3 = D(r3, s1_1_0, 0xFB02FF0D, 0xF9020005, 0xFEFE0401, 0xEDFFF5F5);
	r4 = D(r4, s1_1_0, 0xFC06FDF1, 0xFCFFF6D5, 0xFE1E1DD0, 0x170B12F6);
	r5 = D(r5, s1_1_0, 0x00FFF9ED, 0x03FEF9F4, 0x01F5E4E4, 0xF9FC00FA);
	r6 = D(r6, s1_1_0, 0x1101E50A, 0xFFFDE6FB, 0x0901D513, 0xF600FEEE);
	r7 = D(r7, s1_1_0, 0x0808F309, 0xD10B03F5, 0xFB07F704, 0xFF00FF00);
	r0 = D(r0, s1_1_1, 0x00F7F9DC, 0xF90509F5, 0x0AD7391B, 0x2B23E14C);
	r1 = D(r1, s1_1_1, 0x01000102, 0x02130800, 0xF60CDBF5, 0xE2E600E2);
	r2 = D(r2, s1_1_1, 0xF50508F9, 0x1ADBF237, 0x10220781, 0xFD1CDAF1);
	r3 = D(r3, s1_1_1, 0x00FC09F2, 0x02F301F5, 0xFAE6E8F6, 0xFA13F8F8);
	r4 = D(r4, s1_1_1, 0xF5F11103, 0xF0E212FF, 0x0FF604BC, 0xD2CC08FB);
	r5 = D(r5, s1_1_1, 0x022806FD, 0xE8FFE4FA, 0xE8250EF2, 0xEEFEFCBD);
	r6 = D(r6, s1_1_1, 0x094505D4, 0x021705F3, 0xFD01C0E1, 0xF3070EEB);
	r7 = D(r7, s1_1_1, 0x141D2208, 0xF643DFF7, 0xF3E215F6, 0xF21ED2FD);
	r0 = D(r0, s1_1_2, 0x041CF6E4, 0x001901F5, 0xF4050F00, 0x08F802FF);
	r1 = D(r1, s1_1_2, 0xF8E4F603, 0x010700FE, 0xFA030104, 0xF40AF8FC);
	r2 = D(r2, s1_1_2, 0xFBE7FCFD, 0x0922E8FD, 0xF107E90D, 0x020DFFFF);
	r3 = D(r3, s1_1_2, 0xFAFE09FC, 0xFA2202FA, 0xFEE202FB, 0xFDFFFF00);
	r4 = D(r4, s1_1_2, 0xF820BEFE, 0xEF14F4F9, 0xFCF6E8EE, 0xFDE0D308);
	r5 = D(r5, s1_1_2, 0x00FB0100, 0xF6E2EDF4, 0xF2F401ED, 0xFC08FEFE);
	r6 = D(r6, s1_1_2, 0x0CEB0F00, 0x03F9F8F1, 0xFFE606FE, 0xFB1513FD);
	r7 = D(r7, s1_1_2, 0x1046060D, 0x0C08FB00, 0xFEE9F8FB, 0xFFF20301);
	r0 = D(r0, s1_2_0, 0x00010301, 0x080100FD, 0x06020B06, 0x22FD0308);
	r1 = D(r1, s1_2_0, 0xFA030007, 0xF9000FFD, 0xFFFFFEFB, 0x25FF0604);
	r2 = D(r2, s1_2_0, 0xFA0001F2, 0x1B00FF0B, 0xF6FDFF0E, 0x11020006);
	r3 = D(r3, s1_2_0, 0xFA000103, 0xFC000001, 0xFC0100EF, 0xFA00FFFF);
	r4 = D(r4, s1_2_0, 0x020201FD, 0xFFFF0201, 0xF00FF715, 0x17FE0CFF);
	r5 = D(r5, s1_2_0, 0xFF0001FA, 0x0AFF00FD, 0xFDFF08FD, 0xFF0002FD);
	r6 = D(r6, s1_2_0, 0x0406FD13, 0xEC0308FB, 0x0110D809, 0xED0200F9);
	r7 = D(r7, s1_2_0, 0x030005F5, 0x260806EF, 0xF70002FF, 0xFE00FEFC);
	r0 = D(r0, s1_2_1, 0xF7FD06F2, 0x1002FEFF, 0x13060B05, 0x21040200);
	r1 = D(r1, s1_2_1, 0xF8F7F8F1, 0x0007F8FF, 0x01F3FBFF, 0xCD04F10E);
	r2 = D(r2, s1_2_1, 0xFCFDF7FD, 0x150A06FD, 0x00140EDF, 0x0205FFF6);
	r3 = D(r3, s1_2_1, 0x0B0201FE, 0x07000001, 0xEEF9FBFC, 0xF6FD0600);
	r4 = D(r4, s1_2_1, 0xEE0403FD, 0xF20BEFFD, 0xE204F401, 0xDBEB29F4);
	r5 = D(r5, s1_2_1, 0xE4FF00FB, 0x0AF812F6, 0xE4FDFBFC, 0xEBFFF8FB);
	r6 = D(r6, s1_2_1, 0xFCEE0A05, 0x0205E802, 0x08E408F9, 0xFBFD0BEF);
	r7 = D(r7, s1_2_1, 0xB808FAE9, 0x15FB05FD, 0xFDFC07FC, 0x04FA0DF1);
	r0 = D(r0, s1_2_2, 0xF605FB02, 0xFE010100, 0x110603FD, 0x14F508FD);
	r1 = D(r1, s1_2_2, 0xF6F906F9, 0x0003FF00, 0xFDFD0800, 0x041713FA);
	r2 = D(r2, s1_2_2, 0xF907FCFF, 0x0C110EFE, 0x001501DE, 0x000E07FE);
	r3 = D(r3, s1_2_2, 0xF4FB01FF, 0xF6FE08FF, 0xF6FBF600, 0xF9000100);
	r4 = D(r4, s1_2_2, 0x020308FF, 0x090701FC, 0xE6FF1608, 0x002BE6FD);
	r5 = D(r5, s1_2_2, 0xF9FCFDFF, 0x1628FBFA, 0x030CFEF9, 0xEDEFFBFD);
	r6 = D(r6, s1_2_2, 0xFD060904, 0x03F701FF, 0xFB0A0404, 0xE507FD00);
	r7 = D(r7, s1_2_2, 0xFD031E00, 0x120208FB, 0xF003F6FF, 0x02080200);
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 = D(r0, s0_0_0, 0xFE02F603, 0xFF00FDFF, 0x0307090E, 0x0A010701);
	r1 = D(r1, s0_0_0, 0xFFFFFD00, 0x0906F9F7, 0x0505F7FC, 0x0206F100);
	r2 = D(r2, s0_0_0, 0x010002FF, 0x080107FD, 0x06FCE0FB, 0x0202FC01);
	r3 = D(r3, s0_0_0, 0x01010001, 0x00010000, 0x0001FE00, 0xFE00FF00);
	r4 = D(r4, s0_0_0, 0xFEFEFFFF, 0xFF02D1FD, 0xFAF0FE01, 0xF90A0404);
	r5 = D(r5, s0_0_0, 0xFF01FE00, 0x0001FB01, 0x01FEFE00, 0x00000300);
	r6 = D(r6, s0_0_0, 0x01FEFD06, 0x02FFFFFF, 0xFD05F207, 0xFC0201FE);
	r7 = D(r7, s0_0_0, 0x09FFF800, 0x05020EF3, 0x0101FB03, 0xFF00FD01);
	r0 = D(r0, s0_0_1, 0xFF01000A, 0x04FE03FA, 0x070605F7, 0x140403FF);
	r1 = D(r1, s0_0_1, 0x0100FBFD, 0xFEFF0000, 0x05040500, 0x0AF2110C);
	r2 = D(r2, s0_0_1, 0xFFFD0100, 0x03FA0801, 0xFA03F00E, 0x02F7FDF8);
	r3 = D(r3, s0_0_1, 0xFF00FB00, 0x01000300, 0xFEFFFFFF, 0xFC010402);
	r4 = D(r4, s0_0_1, 0x020002F8, 0xFE0506FF, 0xF1E4EF21, 0x10EC0612);
	r5 = D(r5, s0_0_1, 0x0202FEFF, 0x05FF0201, 0x00000106, 0x01FFFAFE);
	r6 = D(r6, s0_0_1, 0xF0000812, 0xFFFFFE08, 0xF8FD10E8, 0x01FB0502);
	r7 = D(r7, s0_0_1, 0x0A030001, 0x1B0908F9, 0x07FB04FC, 0x01FF0403);
	r0 = D(r0, s0_0_2, 0xF302FF00, 0xFF020201, 0x0509FDFC, 0xF40708E9);
	r1 = D(r1, s0_0_2, 0x080504FB, 0x00020003, 0x0106FFFE, 0x130DFB03);
	r2 = D(r2, s0_0_2, 0xFF00FE05, 0xFA0A0A07, 0x05F2EE14, 0x02FF0400);
	r3 = D(r3, s0_0_2, 0x070002FF, 0x05FC0203, 0x00000100, 0xFFFE0002);
	r4 = D(r4, s0_0_2, 0x03FF0511, 0xFF0902F9, 0x1CEB0618, 0x010B001D);
	r5 = D(r5, s0_0_2, 0x0101FF00, 0xFB0406F7, 0xFD0303FA, 0x00000103);
	r6 = D(r6, s0_0_2, 0x0DF10701, 0x04F60101, 0x0AF6050D, 0x0110FEFD);
	r7 = D(r7, s0_0_2, 0xFE18FFFE, 0x00F5FF00, 0x06050100, 0xFF01FF02);
	r0 = D(r0, s0_1_0, 0xFFFDEA05, 0x000042FE, 0x0108D803, 0xFB01F1F0);
	r1 = D(r1, s0_1_0, 0x01010503, 0xEFFE0702, 0x0F080502, 0x0608F10A);
	r2 = D(r2, s0_1_0, 0xFFFFF602, 0xF5FFE6FC, 0xFDF2040B, 0x0802F701);
	r3 = D(r3, s0_1_0, 0x00000001, 0x00000001, 0x0101FF00, 0x01FE0403);
	r4 = D(r4, s0_1_0, 0xFF000B07, 0xFE001D05, 0x04E9ED0F, 0x0504F6FC);
	r5 = D(r5, s0_1_0, 0x0000F400, 0x00FFF906, 0xFB02E101, 0x0100DDFF);
	r6 = D(r6, s0_1_0, 0xEBF80B08, 0xF6FD0E0E, 0x05FDFE14, 0x04011A00);
	r7 = D(r7, s0_1_0, 0xFEFB0A13, 0xE5115801, 0xFAFC070A, 0x00FF0201);
	r0 = D(r0, s0_1_1, 0x0B0708F8, 0x00DC0E14, 0x2F19AFF5, 0xF60DE630);
	r1 = D(r1, s0_1_1, 0x1AFF01FA, 0x020E0013, 0xC4E11E1C, 0xFB010C14);
	r2 = D(r2, s0_1_1, 0xFEFEE5F7, 0xFED95609, 0xFBDDECFB, 0xDEF32007);
	r3 = D(r3, s0_1_1, 0x02041402, 0x09041BFB, 0xF9FE040B, 0x0B0A0323);
	r4 = D(r4, s0_1_1, 0x0A09D9EA, 0x030705DE, 0x3CB10722, 0xFFDFDB09);
	r5 = D(r5, s0_1_1, 0x0AFE04FB, 0x06063001, 0x0CFF00E1, 0xFFFF07FD);
	r6 = D(r6, s0_1_1, 0xFE1010DE, 0x0FF4F9E1, 0x160E0AD5, 0xF4FD06F8);
	r7 = D(r7, s0_1_1, 0xE91828FA, 0x09DE140D, 0x1B0CFFD4, 0x1802FE00);
	r0 = D(r0, s0_1_2, 0x12FE0818, 0x020500C3, 0x04FD00DF, 0x02F000FF);
	r1 = D(r1, s0_1_2, 0x02E6040A, 0x06FC03FB, 0xF10F0209, 0x13FCF722);
	r2 = D(r2, s0_1_2, 0x0DE7FE07, 0xE20A0522, 0xE0FCF817, 0xF40E0507);
	r3 = D(r3, s0_1_2, 0x1EEFF61F, 0x1906F827, 0xFF0200F4, 0x00FF00F3);
	r4 = D(r4, s0_1_2, 0x1B000AFE, 0xD2F20200, 0x071709D9, 0xE1FC0B21);
	r5 = D(r5, s0_1_2, 0xFE060200, 0x15FA0D18, 0xF60CFF07, 0xFC08FCF0);
	r6 = D(r6, s0_1_2, 0x0704F7CE, 0x01F703F5, 0xFE05FD15, 0xDE09FECC);
	r7 = D(r7, s0_1_2, 0xE32BFDE2, 0x0D030AF6, 0x120007FE, 0xFE020001);
	r0 = D(r0, s0_2_0, 0x00001402, 0x00020701, 0x08FD09FD, 0x050605FD);
	r1 = D(r1, s0_2_0, 0x01FE0D02, 0x0900F006, 0x01010F03, 0x0602DA03);
	r2 = D(r2, s0_2_0, 0xFF001BFF, 0x08093601, 0x0E00D906, 0x04040503);
	r3 = D(r3, s0_2_0, 0x01010801, 0xFF001101, 0x00001E00, 0xFFFF0DFF);
	r4 = D(r4, s0_2_0, 0xFFFF1002, 0x0000FBFE, 0x19151A0C, 0x0301070D);
	r5 = D(r5, s0_2_0, 0xFF01F7FE, 0xFD0007FC, 0x01032D06, 0x00FF1700);
	r6 = D(r6, s0_2_0, 0x08020808, 0x0509FD03, 0xF0FA0D1B, 0x010010FF);
	r7 = D(r7, s0_2_0, 0x05052907, 0x150F15FC, 0x04030005, 0xFE0023FF);
	r0 = D(r0, s0_2_1, 0x0002020A, 0x0102F901, 0x0506FBFA, 0x0E04FB0C);
	r1 = D(r1, s0_2_1, 0xECE71202, 0x05FBFEFB, 0x0803FFFE, 0xE3DE1B20);
	r2 = D(r2, s0_2_1, 0x06040DFB, 0x070C0402, 0x00E4FD18, 0xF1F6FB18);
	r3 = D(r3, s0_2_1, 0x05FC0F04, 0xFF000003, 0x080A03FD, 0xFCFFFE03);
	r4 = D(r4, s0_2_1, 0x08040902, 0x09F5FE0A, 0x142711DC, 0x01FEE90E);
	r5 = D(r5, s0_2_1, 0x0506E706, 0x03FEF10B, 0xF800010F, 0x0003FB01);
	r6 = D(r6, s0_2_1, 0x01080F13, 0x0E020AF6, 0xDEF110F1, 0x07FD0909);
	r7 = D(r7, s0_2_1, 0x0B04000C, 0xE70AFD0E, 0x05FB0406, 0xFC02030D);
	r0 = D(r0, s0_2_2, 0x000401FA, 0xFCFD0105, 0xF901FFFB, 0xFF0A05E4);
	r1 = D(r1, s0_2_2, 0x020E030A, 0xFE030001, 0x0501FF03, 0x0F120018);
	r2 = D(r2, s0_2_2, 0xECFF0313, 0xF5060705, 0xE8F6FB08, 0x0001FF02);
	r3 = D(r3, s0_2_2, 0x0903FB00, 0x04FCFC01, 0xFBFC0104, 0xFD010003);
	r4 = D(r4, s0_2_2, 0xFD07FC09, 0xFD0BFE00, 0xE5FF0D20, 0xE600021F);
	r5 = D(r5, s0_2_2, 0x05F800FC, 0x020800E8, 0xEA060106, 0x08FAFA0C);
	r6 = D(r6, s0_2_2, 0xF913FD02, 0xFEEC000B, 0x0004FEEE, 0x0006FC04);
	r7 = D(r7, s0_2_2, 0x0EFB0018, 0x02F90203, 0x0BFE02FE, 0xFC0400E5);
	r0 = D(r0, s1_0_0, 0xFD01FFFF, 0xFEFBFBFF, 0x07E2F2FD, 0x01F90707);
	r1 = D(r1, s1_0_0, 0xEEFD03FF, 0xFEABFCFE, 0xFF0110FB, 0xFAFA14FA);
	r2 = D(r2, s1_0_0, 0xFF010000, 0xE0EB0006, 0xF7EFFFF6, 0xFF0004FF);
	r3 = D(r3, s1_0_0, 0x000003FF, 0xFF0003FF, 0xFA0101FF, 0x01FEFEFD);
	r4 = D(r4, s1_0_0, 0x0300FEFF, 0x02E6F803, 0xDBD61BFC, 0xE5D9E800);
	r5 = D(r5, s1_0_0, 0x02010000, 0xF90002FF, 0x01FBFE04, 0x00010100);
	r6 = D(r6, s1_0_0, 0xC4D80204, 0x00FC01F5, 0xEEF208FA, 0xFAFB05FB);
	r7 = D(r7, s1_0_0, 0x0C0A0008, 0x0B81B4FA, 0xFDF8F2FF, 0x01FF02FF);
	r0 = D(r0, s1_0_1, 0x04B2FC03, 0xFFFEFE03, 0xFBFDF9F5, 0x1DEE080A);
	r1 = D(r1, s1_0_1, 0x08000500, 0xFEFC0307, 0x04F0FBF3, 0xB6DDF2F6);
	r2 = D(r2, s1_0_1, 0xE40101FF, 0xCEEC0616, 0x05EDF61B, 0x01F303FD);
	r3 = D(r3, s1_0_1, 0x03FEFFF9, 0x00FE00FA, 0xF80002FA, 0xFD00FCFE);
	r4 = D(r4, s1_0_1, 0xFDEBFCFC, 0x00E40302, 0xBEDAFC09, 0x9FCEEFD8);
	r5 = D(r5, s1_0_1, 0xFAFE01FE, 0x05ECF8FF, 0xFDFFFC09, 0xF9FEFD03);
	r6 = D(r6, s1_0_1, 0xD8C2E70A, 0xFA03FEF3, 0x0401F301, 0x08F1FA00);
	r7 = D(r7, s1_0_1, 0x0BEB0309, 0xF4F1E0EB, 0xFFF603F7, 0x0000FC03);
	r0 = D(r0, s1_0_2, 0xFBF7FEF7, 0xFFFFFD06, 0x0407FCE9, 0xFD09FA1E);
	r1 = D(r1, s1_0_2, 0x03FF01EE, 0x00020004, 0xFFFE00F9, 0xB5090A11);
	r2 = D(r2, s1_0_2, 0xFE000002, 0xBAFDFC14, 0x06F3FAFA, 0xFB0201FF);
	r3 = D(r3, s1_0_2, 0xFDFD01FC, 0xFDFE01FE, 0xFE0000F1, 0x00000005);
	r4 = D(r4, s1_0_2, 0xF904FB14, 0xFF07FF0E, 0xC60808F3, 0x13FF0010);
	r5 = D(r5, s1_0_2, 0x02010000, 0xE704FC04, 0xFDFF0106, 0xFF00000A);
	r6 = D(r6, s1_0_2, 0xAEE90111, 0x020001F5, 0xE60300DE, 0xF1FE040C);
	r7 = D(r7, s1_0_2, 0xFB03FE04, 0x03FDFF08, 0x020001F6, 0xFC010003);
	r0 = D(r0, s1_1_0, 0xFEFF0B01, 0x0000FBFF, 0x06F2F30E, 0x09EBFA00);
	r1 = D(r1, s1_1_0, 0x02FE0102, 0x06E127EF, 0x03F5E7FC, 0xE9DA1D00);
	r2 = D(r2, s1_1_0, 0xFFFCFD00, 0xCCE801FC, 0xFDF012F7, 0xFBF20BF7);
	r3 = D(r3, s1_1_0, 0x00FF0200, 0xFFFF0300, 0x01FC0200, 0x020104FE);
	r4 = D(r4, s1_1_0, 0xFDF205FF, 0x04F30DFE, 0xF28103FA, 0xE3DAF3FA);
	r5 = D(r5, s1_1_0, 0x01FAF900, 0x03FA03FD, 0x07F10CFB, 0xFFFE03FE);
	r6 = D(r6, s1_1_0, 0xE5CEE704, 0x05EF09FA, 0xEBEC1104, 0xFCFCFEFF);
	r7 = D(r7, s1_1_0, 0x07F21F05, 0xC1E216E8, 0x05F704FD, 0x03020BFE);
	r0 = D(r0, s1_1_1, 0xECF41FFB, 0xF9FF05FE, 0x05F5EA03, 0x0DDAEF27);
	r1 = D(r1, s1_1_1, 0xFEE80506, 0x0501C7DF, 0x01EDE809, 0xC681B0FE);
	r2 = D(r2, s1_1_1, 0x03FBEFF8, 0xD0C5E023, 0x078FE7F7, 0x07F0E7FC);
	r3 = D(r3, s1_1_1, 0xFBFA18F6, 0xFDFC14F8, 0x02FBF6FF, 0xFEFF01EC);
	r4 = D(r4, s1_1_1, 0xFCEB05FE, 0x05EFD0E5, 0xE581C2E0, 0xE2819BE8);
	r5 = D(r5, s1_1_1, 0xF4FAEC05, 0xF5DBF4FC, 0x04DBFAD3, 0x0502F0E9);
	r6 = D(r6, s1_1_1, 0xBECC01E0, 0xFFE90BE5, 0xE6C6F2ED, 0xF8E019F6);
	r7 = D(r7, s1_1_1, 0x00E5140B, 0xE90BE9F3, 0x01F0E2EC, 0x00FCE9F6);
	r0 = D(r0, s1_1_2, 0xFA01FBFE, 0x00FFFE21, 0x02FD03EB, 0xF704F511);
	r1 = D(r1, s1_1_2, 0xFEFFF7FC, 0x010200FE, 0xFDFC00F0, 0xDEE921F8);
	r2 = D(r2, s1_1_2, 0xFE00FD1A, 0xDCFAFD13, 0xFB02011D, 0x00FCFCF5);
	r3 = D(r3, s1_1_2, 0x00FD01E8, 0x02FDFFFA, 0xFE00FF0B, 0xFF000208);
	r4 = D(r4, s1_1_2, 0xFD021016, 0x0001F9FF, 0xE8F5F5FA, 0x050CF600);
	r5 = D(r5, s1_1_2, 0xFF01FDEB, 0xFB06EAF0, 0xFD05000B, 0x02FE01EF);
	r6 = D(r6, s1_1_2, 0xCBE9E807, 0x0103FE07, 0xF509FAEF, 0xFCFE032B);
	r7 = D(r7, s1_1_2, 0x02F7FF04, 0xE80705FB, 0x0101FD05, 0xFEFFFF14);
	r0 = D(r0, s1_2_0, 0xFC01FCFC, 0x0000FF01, 0x010006FB, 0x06030205);
	r1 = D(r1, s1_2_0, 0x0200FEFD, 0xFC01FFFA, 0x00FF03FC, 0xED020202);
	r2 = D(r2, s1_2_0, 0xFFFEFDFF, 0xC704F204, 0x03F602FB, 0x0000F800);
	r3 = D(r3, s1_2_0, 0x00FF0300, 0x0000FEFF, 0xFEFEFCFD, 0x01FFFBFF);
	r4 = D(r4, s1_2_0, 0xFE010100, 0xFF02FAFE, 0xD6030A00, 0xD801F502);
	r5 = D(r5, s1_2_0, 0x0101FB00, 0xFCFFF901, 0xFEFFFBFA, 0xFFFFFE00);
	r6 = D(r6, s1_2_0, 0xC8F7F0FE, 0xFA03F901, 0x00FD1302, 0xFD01FBFF);
	r7 = D(r7, s1_2_0, 0x0207F3FF, 0xF0FBE7F8, 0xFE00FEFB, 0x00FEFD00);
	r0 = D(r0, s1_2_1, 0x01FF09FD, 0x000002FF, 0x00F804FC, 0x0302E809);
	r1 = D(r1, s1_2_1, 0x00DC1DFF, 0x00020D06, 0xFF00F8F1, 0xDC8FE4E9);
	r2 = D(r2, s1_2_1, 0xFFFEF4FC, 0xCA05090E, 0xF9FAEC0D, 0xFDFDF7F8);
	r3 = D(r3, s1_2_1, 0xFFFFF5FB, 0xFEFEFE01, 0x00FDFCF6, 0xFF000400);
	r4 = D(r4, s1_2_1, 0xFD030701, 0x01020905, 0xFCF306FB, 0xE2D0F0EC);
	r5 = D(r5, s1_2_1, 0xFDFFBFFC, 0xF701C900, 0x020323EA, 0x000018F7);
	r6 = D(r6, s1_2_1, 0xB7F8EC0A, 0x02FF25FA, 0xE704F1F3, 0xFF0204FD);
	r7 = D(r7, s1_2_1, 0x05023D01, 0x03FAEE09, 0xFD01F4EE, 0xFE002D00);
	r0 = D(r0, s1_2_2, 0xFFFDFC04, 0x0000FFFC, 0x00FF030A, 0x0403F31C);
	r1 = D(r1, s1_2_2, 0xFBFDEDF1, 0xFEFF03FB, 0xFF020206, 0xC911E7F4);
	r2 = D(r2, s1_2_2, 0xFFFF0CF8, 0xC804F31E, 0xFBF80C0D, 0xFFFE05FB);
	r3 = D(r3, s1_2_2, 0x01FE09F9, 0x000001FB, 0xFF0002F7, 0xFF000103);
	r4 = D(r4, s1_2_2, 0x00000706, 0xFE020A07, 0xE3FCDDFF, 0xE90CFE13);
	r5 = D(r5, s1_2_2, 0xFF00F602, 0xFEFC1213, 0x01FF0805, 0xFE00FD02);
	r6 = D(r6, s1_2_2, 0xBFF40A15, 0xFCFE02E7, 0xF9001205, 0xFD000305);
	r7 = D(r7, s1_2_2, 0x02070A00, 0xFEF2000B, 0xFE0102F0, 0x00010605);
	f0 = vec4(r0) * 6.2000124e-05;
	f0 = clamp(f0, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 0), f0);
	f1 = vec4(r1) * 6.2000124e-05;
	f1 = clamp(f1, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 0), f1);
	f2 = vec4(r2) * 6.2000124e-05;
	f2 = clamp(f2, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(0, 1), f2);
	f3 = vec4(r3) * 6.2000124e-05;
	f3 = clamp(f3, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(1, 1), f3);
	f4 = vec4(r4) * 6.2000124e-05;
	f4 = clamp(f4, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 0), f4);
	f5 = vec4(r5) * 6.2000124e-05;
	f5 = clamp(f5, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 0), f5);
	f6 = vec4(r6) * 6.2000124e-05;
	f6 = clamp(f6, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(2, 1), f6);
	f7 = vec4(r7) * 6.2000124e-05;
	f7 = clamp(f7, vec4(0.0), vec4(1.0));
	imageStore(out_image, opos + ivec2(3, 1), f7);
}

//!DESC [CuNNy_4x32_SOFT_vk] -out-shuffle
//!HOOK LUMA
//!COMPUTE 16 16 8 8
//!BIND conv4
//!BIND LUMA
//!WIDTH LUMA.w 2 *
//!HEIGHT LUMA.h 2 *
//!COMPONENTS 1
//!WHEN OUTPUT.w LUMA.w 1.200 * > OUTPUT.h LUMA.h 1.200 * > *
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
#ifdef GL_EXT_shader_explicit_arithmetic_types_float16
#	define V4 f16vec4
#	define M4 f16mat4
#	define F float16_t
#else
#	define V4 vec4
#	define M4 mat4
#	define F float
#endif
shared V4 G[8][10][10];
void hook() {
	ivec2 xy = ivec2(gl_LocalInvocationID.xy);
	ivec2 pos = ivec2(gl_WorkGroupID.xy) * ivec2(8, 8) + xy;
	ivec2 opos = pos * ivec2(2, 2);
	ivec2 sz = ivec2(LUMA_size) - ivec2(1);
	for (int y = 0; y < 10; y += 8) {
		int ay = xy.y + y;
		if (ay >= 10) break;
		for (int x = 0; x < 10; x += 8) {
			int ax = xy.x + x;
			if (ax >= 10) break;
			vec2 p;
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(1, 1)) * conv4_pt;
			V4 sr0 = V4(conv4_gather(p, 0));
			V4 sg0 = V4(conv4_gather(p, 1));
			V4 sb0 = V4(conv4_gather(p, 2));
			V4 sa0 = V4(conv4_gather(p, 3));
			G[0][ay][ax] = V4(sr0.w, sg0.w, sb0.w, sa0.w);
			G[1][ay][ax] = V4(sr0.z, sg0.z, sb0.z, sa0.z);
			G[2][ay][ax] = V4(sr0.x, sg0.x, sb0.x, sa0.x);
			G[3][ay][ax] = V4(sr0.y, sg0.y, sb0.y, sa0.y);
			p = vec2(clamp(pos + ivec2(x - 1, y - 1), ivec2(0), sz) * ivec2(4, 2) + ivec2(3, 1)) * conv4_pt;
			V4 sr1 = V4(conv4_gather(p, 0));
			V4 sg1 = V4(conv4_gather(p, 1));
			V4 sb1 = V4(conv4_gather(p, 2));
			V4 sa1 = V4(conv4_gather(p, 3));
			G[4][ay][ax] = V4(sr1.w, sg1.w, sb1.w, sa1.w);
			G[5][ay][ax] = V4(sr1.z, sg1.z, sb1.z, sa1.z);
			G[6][ay][ax] = V4(sr1.x, sg1.x, sb1.x, sa1.x);
			G[7][ay][ax] = V4(sr1.y, sg1.y, sb1.y, sa1.y);
		}
	}
	barrier();
	V4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;
	V4 r0;
	r0 = V4(0.0);
	s0_0_0 = G[0][xy.y+0][xy.x+0]; s0_0_1 = G[0][xy.y+0][xy.x+1];
	s0_0_2 = G[0][xy.y+0][xy.x+2]; s0_1_0 = G[0][xy.y+1][xy.x+0];
	s0_1_1 = G[0][xy.y+1][xy.x+1]; s0_1_2 = G[0][xy.y+1][xy.x+2];
	s0_2_0 = G[0][xy.y+2][xy.x+0]; s0_2_1 = G[0][xy.y+2][xy.x+1];
	s0_2_2 = G[0][xy.y+2][xy.x+2]; s1_0_0 = G[1][xy.y+0][xy.x+0];
	s1_0_1 = G[1][xy.y+0][xy.x+1]; s1_0_2 = G[1][xy.y+0][xy.x+2];
	s1_1_0 = G[1][xy.y+1][xy.x+0]; s1_1_1 = G[1][xy.y+1][xy.x+1];
	s1_1_2 = G[1][xy.y+1][xy.x+2]; s1_2_0 = G[1][xy.y+2][xy.x+0];
	s1_2_1 = G[1][xy.y+2][xy.x+1]; s1_2_2 = G[1][xy.y+2][xy.x+2];
	r0 += M4(-3.264e-03, -7.591e-04, 1.928e-04, 8.915e-05, 3.329e-06, 1.161e-05, 5.075e-06, -5.517e-07, 2.079e-04, 1.484e-04, 6.894e-04, 6.574e-05, 8.838e-03, 3.383e-04, 6.355e-04, -9.501e-05) * s0_0_0;
	r0 += M4(-7.521e-04, -8.654e-03, 1.542e-04, 8.733e-04, -9.591e-06, -3.281e-05, -1.971e-05, 7.629e-06, -1.899e-02, -1.314e-02, -1.694e-03, -9.317e-04, 1.291e-02, 1.872e-02, -5.981e-04, 6.664e-04) * s0_0_1;
	r0 += M4(-1.132e-05, -6.844e-04, -2.070e-06, -2.876e-05, 5.169e-06, 1.979e-05, 1.156e-05, -7.891e-06, 1.181e-04, -1.141e-02, -6.311e-06, -1.830e-04, -2.634e-04, 4.620e-03, 7.512e-05, -5.090e-04) * s0_0_2;
	r0 += M4(1.105e-01, -8.233e-05, 8.009e-03, 2.057e-03, 1.298e-02, -5.192e-05, 1.484e-03, 2.193e-04, -9.276e-04, -1.585e-04, -7.773e-04, 2.013e-04, 2.844e-02, 4.188e-04, 2.317e-02, 1.243e-03) * s0_1_0;
	r0 += M4(-1.294e-02, 2.242e-01, 5.593e-03, -3.670e-03, 2.087e-01, 1.003e-01, -2.834e-03, -1.300e-03, -8.096e-02, -2.118e-02, -5.911e-02, -2.251e-02, 7.627e-02, 7.982e-02, 7.471e-02, 7.447e-02) * s0_1_1;
	r0 += M4(1.792e-03, -5.559e-03, 4.664e-04, -1.400e-03, -7.452e-05, 5.503e-02, -3.148e-04, 6.270e-03, -5.621e-04, -4.482e-02, -1.049e-04, -3.569e-02, -5.947e-04, 2.227e-02, -5.778e-04, 1.914e-02) * s0_1_2;
	r0 += M4(-1.490e-03, 6.606e-05, -1.015e-02, 7.765e-04, 2.147e-03, 4.250e-04, 7.410e-03, 1.320e-04, -4.317e-05, 1.860e-05, -2.080e-03, 3.258e-04, -3.191e-05, 9.066e-05, 9.612e-03, -2.177e-04) * s0_2_0;
	r0 += M4(-3.052e-04, -6.005e-03, -1.972e-02, -9.005e-02, 1.076e-04, 1.692e-03, 3.652e-02, 4.586e-02, -5.470e-04, 6.991e-05, -3.280e-02, -1.720e-02, -5.842e-04, -1.443e-03, 2.201e-02, 2.245e-02) * s0_2_1;
	r0 += M4(-4.172e-07, 1.452e-03, -4.002e-04, -1.083e-05, 1.806e-04, -1.784e-03, 8.999e-04, 2.094e-02, 1.894e-04, -1.084e-03, 1.642e-04, -1.898e-02, 1.042e-04, -2.452e-04, 1.579e-04, 6.056e-03) * s0_2_2;
	r0 += M4(-1.501e-02, -6.918e-03, -1.203e-02, -1.100e-03, 1.765e-04, -5.787e-05, -6.455e-06, -6.845e-06, -2.892e-03, 4.260e-04, -1.001e-05, 1.523e-04, 1.736e-02, 6.454e-03, 3.712e-03, 6.260e-03) * s1_0_0;
	r0 += M4(2.212e-02, 8.847e-02, -9.365e-03, -4.298e-02, -1.287e-03, -1.573e-03, 6.882e-04, -8.237e-05, -1.863e-02, -1.719e-02, 2.182e-04, 9.422e-04, 1.651e-01, -2.580e-01, 5.149e-02, -1.009e-01) * s1_0_1;
	r0 += M4(-7.471e-04, -9.184e-03, -1.991e-03, 2.161e-03, -3.040e-03, 1.169e-02, 3.054e-04, 9.507e-04, 1.063e-05, 8.251e-03, 1.333e-04, 3.748e-03, -6.882e-04, 2.259e-02, -7.208e-04, 1.569e-02) * s1_0_2;
	r0 += M4(6.103e-03, -1.387e-05, 8.237e-02, 2.228e-03, -2.426e-07, 6.667e-05, 1.785e-04, 6.543e-05, -4.700e-02, -1.814e-03, -1.970e-02, -4.292e-04, 4.188e-03, 1.918e-03, 2.257e-02, 6.429e-03) * s1_1_0;
	r0 += M4(5.350e-04, 2.108e-03, 5.115e-02, 2.981e-01, -4.483e-03, -2.639e-03, 5.394e-03, -2.169e-03, 3.153e-01, -4.385e-02, -3.335e-02, -8.121e-02, 2.069e-02, -5.792e-02, 1.245e-01, -2.417e-01) * s1_1_1;
	r0 += M4(-2.067e-04, -2.045e-03, 1.497e-04, -6.390e-03, 1.053e-02, -3.936e-01, 1.938e-04, 6.425e-02, -6.952e-04, 1.138e-01, 1.301e-03, 4.895e-02, 3.509e-04, 3.891e-03, -2.034e-04, 1.468e-02) * s1_1_2;
	r0 += M4(1.026e-05, -4.650e-05, -2.845e-04, -1.491e-04, 3.617e-04, 3.098e-05, 1.838e-03, 3.453e-05, -4.932e-03, -4.604e-04, -1.183e-02, 1.338e-04, -3.058e-03, -2.458e-04, -2.862e-03, 1.365e-03) * s1_2_0;
	r0 += M4(4.798e-06, 9.226e-05, -1.231e-04, -9.343e-04, -2.434e-03, -5.737e-04, 6.568e-03, 9.425e-04, -1.152e-04, 2.298e-03, 9.015e-02, -9.076e-03, 1.255e-03, -2.949e-03, 3.537e-03, -3.768e-03) * s1_2_1;
	r0 += M4(1.603e-06, 7.924e-06, 9.600e-07, 5.330e-05, -1.057e-03, 3.643e-03, 8.688e-03, 3.964e-02, 8.893e-05, 4.531e-04, -1.518e-05, 4.000e-02, -8.287e-05, -4.671e-06, 2.482e-04, 1.701e-04) * s1_2_2;
	s0_0_0 = G[2][xy.y+0][xy.x+0]; s0_0_1 = G[2][xy.y+0][xy.x+1];
	s0_0_2 = G[2][xy.y+0][xy.x+2]; s0_1_0 = G[2][xy.y+1][xy.x+0];
	s0_1_1 = G[2][xy.y+1][xy.x+1]; s0_1_2 = G[2][xy.y+1][xy.x+2];
	s0_2_0 = G[2][xy.y+2][xy.x+0]; s0_2_1 = G[2][xy.y+2][xy.x+1];
	s0_2_2 = G[2][xy.y+2][xy.x+2]; s1_0_0 = G[3][xy.y+0][xy.x+0];
	s1_0_1 = G[3][xy.y+0][xy.x+1]; s1_0_2 = G[3][xy.y+0][xy.x+2];
	s1_1_0 = G[3][xy.y+1][xy.x+0]; s1_1_1 = G[3][xy.y+1][xy.x+1];
	s1_1_2 = G[3][xy.y+1][xy.x+2]; s1_2_0 = G[3][xy.y+2][xy.x+0];
	s1_2_1 = G[3][xy.y+2][xy.x+1]; s1_2_2 = G[3][xy.y+2][xy.x+2];
	r0 += M4(-1.489e-02, -5.407e-03, -4.723e-03, -2.420e-04, -5.766e-03, 9.359e-04, -2.899e-04, 7.153e-06, 7.060e-03, -9.004e-05, -8.929e-04, -3.814e-04, -1.012e-03, 1.138e-03, 8.274e-05, 1.958e-05) * s0_0_0;
	r0 += M4(-1.042e-01, -4.198e-02, 1.062e-02, -4.565e-03, -2.461e-02, -2.254e-02, 1.292e-03, 1.421e-03, 2.615e-02, 3.103e-02, -3.489e-04, 2.230e-04, 5.909e-02, 2.633e-02, -3.880e-05, 2.639e-03) * s0_0_1;
	r0 += M4(-2.825e-04, -2.362e-02, 4.132e-04, 1.031e-04, 7.159e-05, -5.996e-03, -1.049e-04, 2.256e-04, -2.302e-04, 6.434e-03, -7.944e-05, -1.713e-03, -3.642e-05, 2.292e-02, 1.493e-04, -6.449e-04) * s0_0_2;
	r0 += M4(5.199e-03, -1.495e-04, 2.709e-02, -2.490e-03, -2.879e-02, 5.320e-04, -1.759e-02, 8.361e-04, 2.847e-02, -1.431e-03, 2.963e-02, -9.808e-04, -1.782e-02, 1.269e-04, -1.972e-02, 5.192e-04) * s0_1_0;
	r0 += M4(-3.230e-03, -3.500e-03, -2.035e-02, 2.949e-01, -8.616e-02, -1.082e-01, -9.584e-02, -1.019e-01, 1.409e-01, 1.150e-01, 1.196e-01, 1.373e-01, -1.420e-02, -5.247e-02, 3.545e-01, -1.709e-02) * s0_1_1;
	r0 += M4(-1.335e-04, -6.083e-03, 6.348e-04, -2.596e-02, 1.114e-03, -1.765e-02, 6.175e-04, -2.043e-02, -6.962e-04, 3.295e-02, -8.615e-04, 2.595e-02, 1.123e-03, 9.568e-03, -4.048e-04, 6.827e-02) * s0_1_2;
	r0 += M4(2.641e-05, 6.237e-05, -1.520e-03, -4.310e-04, 1.494e-04, 5.795e-07, -8.745e-03, 7.996e-05, -1.201e-03, -1.050e-04, 5.273e-03, -7.141e-04, 7.056e-05, 4.936e-05, -4.359e-03, 1.294e-04) * s0_2_0;
	r0 += M4(-2.362e-06, -9.772e-06, -8.186e-04, -2.985e-03, 5.996e-04, 9.696e-04, -2.371e-02, -2.755e-02, -7.101e-04, -6.357e-04, 2.843e-02, 2.255e-02, 4.970e-04, 3.414e-04, -1.521e-02, -1.262e-02) * s0_2_1;
	r0 += M4(2.364e-05, 1.266e-04, 1.444e-05, 4.881e-04, -1.857e-04, 8.033e-04, -2.351e-04, -3.652e-03, -2.391e-05, -4.486e-05, -2.733e-04, 9.172e-03, 6.825e-06, 1.540e-03, -7.542e-05, 2.648e-03) * s0_2_2;
	r0 += M4(1.811e-02, 1.183e-02, 2.248e-03, 3.050e-05, -1.576e-02, -9.850e-04, -3.764e-03, 1.243e-04, -1.712e-02, -2.239e-03, 5.311e-03, 2.435e-04, 1.137e-04, 1.814e-05, -4.064e-05, -1.114e-06) * s1_0_0;
	r0 += M4(1.133e-03, 7.398e-02, 7.750e-04, 7.867e-05, -2.896e-03, -4.547e-02, -9.480e-04, 6.693e-04, -1.114e-01, -1.740e-01, -1.343e-02, 6.735e-03, 2.465e-02, 4.648e-03, 2.945e-04, -6.082e-04) * s1_0_1;
	r0 += M4(4.791e-05, -6.559e-04, -4.638e-05, -1.024e-03, -7.015e-05, 8.566e-04, 5.406e-05, 1.270e-03, -8.381e-04, -9.910e-03, 9.971e-05, -9.298e-04, 1.642e-03, -1.607e-02, -7.538e-04, 2.065e-03) * s1_0_2;
	r0 += M4(-1.362e-01, -6.460e-03, -9.925e-02, 8.796e-04, -1.335e-01, -2.012e-03, -3.430e-02, 1.035e-03, -9.755e-03, -7.792e-04, -9.223e-03, 3.010e-03, 2.313e-04, -2.183e-05, 8.312e-04, -3.091e-05) * s1_1_0;
	r0 += M4(5.218e-03, 4.616e-02, -3.592e-03, 3.289e-01, -6.735e-03, 2.591e-01, 2.886e-03, -1.399e-01, 5.500e-03, 8.058e-03, 2.803e-01, -1.003e-01, 2.621e-01, 1.085e-02, 7.412e-02, 9.676e-03) * s1_1_1;
	r0 += M4(3.475e-05, 2.388e-03, -1.465e-04, -8.149e-04, -3.496e-05, -3.029e-03, 1.971e-04, 9.096e-04, -3.478e-04, 2.076e-03, -1.585e-03, 3.426e-02, -3.809e-04, -2.455e-01, -2.838e-04, -1.877e-01) * s1_1_2;
	r0 += M4(-1.689e-04, 3.433e-04, -1.948e-02, 1.698e-04, -5.091e-04, -1.030e-03, -3.338e-02, 2.537e-04, -2.960e-05, -2.751e-05, 1.510e-03, 2.745e-04, 6.022e-05, -4.538e-05, 2.459e-04, -8.038e-05) * s1_2_0;
	r0 += M4(1.080e-04, 8.198e-04, -9.011e-04, 1.250e-02, 4.202e-04, 5.890e-03, 2.509e-03, 7.983e-02, 5.084e-06, -2.769e-05, 7.241e-04, 3.350e-03, 3.106e-03, 7.132e-04, 4.798e-02, 2.945e-04) * s1_2_1;
	r0 += M4(4.356e-07, 3.477e-06, 1.268e-06, 1.760e-04, -6.486e-06, -9.152e-05, 1.564e-06, -3.852e-05, -2.782e-05, -1.612e-04, 4.626e-05, -4.309e-04, -1.057e-03, -5.083e-03, 1.965e-04, -8.004e-02) * s1_2_2;
	s0_0_0 = G[4][xy.y+0][xy.x+0]; s0_0_1 = G[4][xy.y+0][xy.x+1];
	s0_0_2 = G[4][xy.y+0][xy.x+2]; s0_1_0 = G[4][xy.y+1][xy.x+0];
	s0_1_1 = G[4][xy.y+1][xy.x+1]; s0_1_2 = G[4][xy.y+1][xy.x+2];
	s0_2_0 = G[4][xy.y+2][xy.x+0]; s0_2_1 = G[4][xy.y+2][xy.x+1];
	s0_2_2 = G[4][xy.y+2][xy.x+2]; s1_0_0 = G[5][xy.y+0][xy.x+0];
	s1_0_1 = G[5][xy.y+0][xy.x+1]; s1_0_2 = G[5][xy.y+0][xy.x+2];
	s1_1_0 = G[5][xy.y+1][xy.x+0]; s1_1_1 = G[5][xy.y+1][xy.x+1];
	s1_1_2 = G[5][xy.y+1][xy.x+2]; s1_2_0 = G[5][xy.y+2][xy.x+0];
	s1_2_1 = G[5][xy.y+2][xy.x+1]; s1_2_2 = G[5][xy.y+2][xy.x+2];
	r0 += M4(5.246e-03, 9.725e-04, -1.874e-03, 6.377e-05, -3.080e-03, 6.921e-04, -5.177e-04, 3.472e-05, -2.240e-02, -1.371e-02, 2.458e-03, 1.142e-03, 1.557e-02, -7.642e-04, 6.227e-03, 6.855e-04) * s0_0_0;
	r0 += M4(6.885e-04, -1.288e-02, -5.852e-05, 8.799e-04, 1.247e-02, -2.287e-03, -5.241e-05, -1.237e-03, -2.971e-02, -4.323e-02, 1.677e-03, 2.383e-03, -1.081e-01, 7.903e-02, -1.808e-02, 1.341e-02) * s0_0_1;
	r0 += M4(4.594e-04, 2.003e-03, 6.399e-05, 9.398e-04, 5.752e-05, -1.387e-03, -2.121e-04, 2.424e-04, -1.974e-02, -2.343e-02, -5.669e-06, 2.924e-03, 1.039e-03, 1.192e-02, -1.868e-04, -5.459e-03) * s0_0_2;
	r0 += M4(1.002e-01, 8.578e-05, 4.663e-02, 4.336e-03, 6.366e-03, -1.694e-06, -6.157e-03, 5.568e-04, 4.030e-02, 6.956e-03, -7.439e-02, -1.617e-02, 1.434e-02, -3.970e-04, 2.180e-02, -2.539e-03) * s0_1_0;
	r0 += M4(-1.812e-02, 3.155e-01, -4.581e-02, 7.052e-03, -3.916e-01, 4.668e-02, 7.250e-02, 1.954e-03, 2.140e-01, 1.333e-01, -1.982e-01, -1.921e-01, -1.932e-01, 1.564e-01, -2.306e-01, 2.068e-01) * s0_1_1;
	r0 += M4(6.984e-04, -2.910e-02, 5.844e-04, -5.932e-03, -3.530e-04, 6.360e-03, -4.469e-03, 1.002e-02, 2.866e-02, 1.129e-01, -3.441e-02, -1.179e-01, 1.447e-03, 1.417e-02, 1.488e-03, 2.313e-02) * s0_1_2;
	r0 += M4(-1.503e-03, -8.928e-05, 3.530e-02, -9.537e-04, -7.505e-04, 6.542e-06, 4.525e-04, 2.022e-03, -7.507e-04, -3.763e-04, 6.407e-03, 5.495e-03, 6.663e-03, -2.981e-05, 6.320e-03, 1.512e-04) * s0_2_0;
	r0 += M4(2.209e-03, 1.092e-04, 1.847e-02, 1.023e-01, -7.541e-04, -2.604e-03, 2.828e-02, -1.563e-02, -9.966e-04, -2.396e-04, 2.764e-02, 2.638e-02, -5.538e-04, 2.224e-03, -5.335e-02, 3.248e-02) * s0_2_1;
	r0 += M4(4.286e-04, 6.455e-05, 9.045e-04, -1.072e-02, 4.322e-04, -4.138e-03, 2.383e-03, 4.463e-03, -2.032e-04, 2.972e-04, 1.376e-02, 2.018e-02, -3.394e-05, -1.547e-02, 2.111e-03, -1.342e-02) * s0_2_2;
	r0 += M4(-1.998e-04, 1.619e-04, -3.182e-04, -2.851e-05, 2.161e-02, -1.285e-03, -8.961e-04, 2.734e-05, 8.895e-03, 1.888e-05, -9.969e-04, -1.692e-04, 2.469e-02, 9.615e-03, -1.108e-03, 1.205e-04) * s1_0_0;
	r0 += M4(-7.608e-02, -2.716e-03, 3.254e-03, -3.022e-04, 1.855e-03, 6.580e-02, 8.055e-04, -2.978e-03, 8.682e-02, 4.549e-02, 4.143e-03, -1.623e-03, 1.802e-02, 8.440e-02, -6.962e-04, 8.014e-04) * s1_0_1;
	r0 += M4(3.599e-04, -3.477e-02, 2.267e-04, -2.386e-03, 1.445e-03, -3.980e-03, 1.897e-04, -2.297e-03, 3.009e-03, 3.557e-02, 1.066e-03, 2.743e-03, 3.995e-04, 5.320e-03, 1.889e-05, -5.925e-03) * s1_0_2;
	r0 += M4(1.594e-03, -2.252e-04, 1.233e-03, -6.545e-05, -8.587e-03, 1.346e-03, 9.389e-02, -4.304e-03, 4.148e-03, -4.536e-04, 5.713e-03, -9.455e-04, -3.209e-03, 1.829e-04, -4.037e-02, -6.121e-06) * s1_1_0;
	r0 += M4(-4.442e-03, -1.407e-03, -2.054e-01, -3.541e-03, -1.220e-02, -1.139e-01, 3.159e-02, 3.639e-01, 8.757e-03, 1.828e-03, -3.574e-01, 3.923e-02, 1.821e-03, -6.746e-03, -4.182e-02, -3.357e-01) * s1_1_1;
	r0 += M4(4.950e-04, 7.828e-03, -6.114e-04, -2.500e-02, 1.799e-04, -1.790e-03, 2.364e-03, -6.852e-03, -2.219e-03, 1.076e-02, 4.479e-03, 1.729e-03, -7.611e-05, -2.911e-04, -2.372e-04, 5.181e-03) * s1_1_2;
	r0 += M4(-4.437e-04, 3.089e-05, -5.572e-04, -2.351e-05, 1.780e-03, 1.110e-03, -1.244e-02, 1.267e-03, -3.617e-04, -1.019e-05, -1.168e-03, -3.574e-05, 5.599e-04, -3.116e-06, 1.057e-03, 6.440e-06) * s1_2_0;
	r0 += M4(2.342e-04, -2.043e-05, 4.323e-03, -1.433e-04, 7.067e-04, -3.622e-04, 1.398e-04, -4.460e-02, -3.887e-04, -2.915e-04, 6.862e-03, -1.959e-04, -3.196e-04, -5.037e-05, -4.808e-03, 1.880e-04) * s1_2_1;
	r0 += M4(-5.986e-07, 5.320e-04, 8.434e-05, 5.197e-04, 5.127e-05, 1.032e-04, 9.250e-04, 2.320e-03, 4.273e-04, 3.297e-04, 1.363e-03, 4.100e-04, 4.668e-06, -4.034e-04, -9.780e-06, -4.563e-04) * s1_2_2;
	s0_0_0 = G[6][xy.y+0][xy.x+0]; s0_0_1 = G[6][xy.y+0][xy.x+1];
	s0_0_2 = G[6][xy.y+0][xy.x+2]; s0_1_0 = G[6][xy.y+1][xy.x+0];
	s0_1_1 = G[6][xy.y+1][xy.x+1]; s0_1_2 = G[6][xy.y+1][xy.x+2];
	s0_2_0 = G[6][xy.y+2][xy.x+0]; s0_2_1 = G[6][xy.y+2][xy.x+1];
	s0_2_2 = G[6][xy.y+2][xy.x+2]; s1_0_0 = G[7][xy.y+0][xy.x+0];
	s1_0_1 = G[7][xy.y+0][xy.x+1]; s1_0_2 = G[7][xy.y+0][xy.x+2];
	s1_1_0 = G[7][xy.y+1][xy.x+0]; s1_1_1 = G[7][xy.y+1][xy.x+1];
	s1_1_2 = G[7][xy.y+1][xy.x+2]; s1_2_0 = G[7][xy.y+2][xy.x+0];
	s1_2_1 = G[7][xy.y+2][xy.x+1]; s1_2_2 = G[7][xy.y+2][xy.x+2];
	r0 += M4(2.606e-03, -1.483e-03, 8.860e-04, -7.899e-05, -1.176e-02, -1.230e-03, -4.633e-04, -3.170e-04, 9.167e-03, -7.844e-04, 1.507e-03, 1.073e-04, -4.751e-03, 1.841e-03, -1.572e-03, -5.136e-04) * s0_0_0;
	r0 += M4(1.983e-02, 2.563e-02, -2.795e-03, -2.207e-03, -1.140e-01, -8.625e-02, 5.224e-04, -7.362e-03, -5.752e-02, 3.770e-02, 6.091e-03, 9.780e-05, 1.407e-03, -3.677e-03, -2.151e-04, -1.003e-03) * s0_0_1;
	r0 += M4(-2.758e-04, -1.785e-03, 1.067e-04, -1.145e-03, -2.384e-03, -3.476e-02, 1.011e-04, -9.618e-04, 3.822e-04, -1.079e-02, -4.938e-04, 7.597e-04, 2.314e-05, 9.251e-04, -2.511e-05, 2.652e-05) * s0_0_2;
	r0 += M4(5.006e-03, -3.402e-04, 6.513e-03, -2.399e-03, 5.221e-03, 2.494e-04, 5.459e-03, 7.009e-04, 8.373e-03, 2.667e-04, 1.617e-02, -2.650e-03, -7.106e-02, 2.242e-03, -2.120e-02, 5.718e-04) * s0_1_0;
	r0 += M4(9.507e-02, 7.929e-02, 9.057e-02, 9.053e-02, 1.551e-02, 2.682e-02, -2.485e-01, -8.825e-02, -1.104e-01, 6.784e-02, -2.124e-01, 1.213e-01, 2.817e-02, -2.783e-01, 1.523e-02, -4.069e-02) * s0_1_1;
	r0 += M4(-2.013e-03, 3.243e-03, -7.294e-04, 6.839e-03, -1.936e-03, -5.776e-03, 2.556e-03, -5.060e-02, 7.648e-04, -1.857e-02, 8.045e-04, -4.556e-02, 1.517e-04, 1.698e-02, -2.442e-04, 8.624e-03) * s0_1_2;
	r0 += M4(4.060e-04, -4.811e-05, 4.291e-03, -6.086e-04, -1.356e-04, -4.833e-05, 3.437e-03, 5.045e-04, 2.699e-03, -6.108e-05, 1.150e-02, -1.048e-04, 4.119e-04, 2.915e-04, -3.243e-02, 5.803e-04) * s0_2_0;
	r0 += M4(-1.054e-03, 4.966e-04, 1.923e-02, 1.960e-02, -1.880e-04, -2.437e-04, 2.306e-02, 1.086e-02, -7.097e-04, -2.293e-03, -1.138e-02, -1.126e-02, -2.992e-03, -4.090e-04, -1.160e-02, -1.032e-01) * s0_2_1;
	r0 += M4(4.518e-04, 2.295e-04, -4.968e-04, 1.480e-03, -5.540e-06, 7.022e-04, 2.611e-04, 4.367e-03, -1.740e-05, -5.873e-04, 3.064e-04, -2.349e-03, 1.083e-04, 2.230e-03, -2.587e-04, 3.811e-03) * s0_2_2;
	r0 += M4(-7.236e-03, 1.002e-04, 1.426e-05, -1.124e-05, -1.123e-03, -4.055e-05, 1.386e-06, -6.696e-06, 1.811e-02, -4.135e-04, 5.240e-04, -2.902e-05, -5.329e-04, -7.978e-05, 8.551e-05, 1.534e-05) * s1_0_0;
	r0 += M4(-8.346e-03, -2.011e-02, -5.967e-04, 2.056e-04, -1.417e-02, -9.873e-04, -4.263e-04, 4.484e-05, 2.912e-02, 4.164e-02, 1.306e-03, 1.090e-03, 7.916e-03, -2.605e-02, -2.029e-03, 6.847e-04) * s1_0_1;
	r0 += M4(-5.903e-05, -2.357e-03, 2.308e-05, 4.113e-04, -2.145e-02, -4.164e-02, 8.769e-05, 1.093e-03, 6.156e-04, 3.780e-03, -2.874e-05, 6.138e-04, -6.046e-04, -3.124e-02, 5.694e-05, -8.825e-05) * s1_0_2;
	r0 += M4(-2.137e-02, 4.797e-04, -1.683e-02, 6.404e-04, -3.271e-03, -2.898e-03, -1.144e-03, 9.763e-05, 3.382e-02, 1.576e-03, 4.533e-02, -7.773e-04, -4.459e-04, 1.731e-04, -2.093e-03, 1.500e-04) * s1_1_0;
	r0 += M4(-1.062e-01, -7.845e-02, -6.039e-02, -8.252e-02, 9.342e-02, 5.599e-03, -2.484e-02, 2.163e-03, -2.591e-01, 1.828e-02, -1.187e-02, 1.304e-01, -8.812e-03, -3.846e-03, 3.113e-01, -1.900e-02) * s1_1_1;
	r0 += M4(7.672e-05, -3.105e-02, 2.559e-04, -1.769e-02, 1.314e-01, 2.602e-01, -4.682e-02, -1.216e-01, -1.857e-03, -9.825e-02, -2.250e-03, -4.230e-02, 1.254e-03, -1.695e-03, 2.349e-03, -4.540e-02) * s1_1_2;
	r0 += M4(5.242e-04, 3.498e-05, -2.972e-03, 2.017e-04, -3.703e-03, -5.006e-04, -8.043e-03, -5.256e-04, 1.808e-03, -8.103e-05, 1.779e-02, 3.324e-05, -3.776e-05, 7.449e-06, 2.994e-05, 7.039e-05) * s1_2_0;
	r0 += M4(1.648e-04, 7.038e-04, -2.684e-02, -1.910e-02, -1.274e-02, -6.703e-03, 7.737e-03, 5.242e-03, 1.035e-03, -1.900e-03, -1.018e-01, 1.481e-02, 2.821e-04, 1.416e-04, -3.830e-03, -1.682e-05) * s1_2_1;
	r0 += M4(1.451e-05, 4.412e-04, -3.401e-05, -7.990e-03, 8.621e-05, -9.665e-03, -4.020e-02, -7.983e-02, -3.876e-04, -4.421e-04, -1.998e-03, -4.216e-02, 6.540e-05, 1.957e-04, -5.098e-04, 4.882e-03) * s1_2_2;
	r0 += V4(1.499e-08, -7.450e-09, 1.080e-09, -6.620e-09);
	vec2 opt = 0.5 * LUMA_pt;
	vec2 fpos = (vec2(opos) + vec2(0.5)) * opt;
	imageStore(out_image, opos + ivec2(0, 0), vec4(r0.x + LUMA_tex(fpos + vec2(0.0, 0.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(1, 0), vec4(r0.y + LUMA_tex(fpos + vec2(1.0, 0.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(0, 1), vec4(r0.z + LUMA_tex(fpos + vec2(0.0, 1.0) * opt).r, 0.0, 0.0, 1.0));
	imageStore(out_image, opos + ivec2(1, 1), vec4(r0.w + LUMA_tex(fpos + vec2(1.0, 1.0) * opt).r, 0.0, 0.0, 1.0));
}
